How to call a method that takes multiple parameters in a thread?

前端 未结 4 1999
無奈伤痛
無奈伤痛 2021-02-08 07:54

I am building a C# Desktop application. How do I call a method that takes multiple parameters in a thread. I have a method called Send(string arg1, string arg2, string arg3) , I

相关标签:
4条回答
  • 2021-02-08 08:22
    Thread thread = new Thread(() => Send(arg1, arg2, arg3));
    thread.Start();
    
    0 讨论(0)
  • 2021-02-08 08:23

    this may help. You can define your Send method as follows and then can use the parameters.

    string[] parameters = new string[3];
    parameters[0] = arg1;
    parameters[1] = arg2;
    parameters[1] = arg3;
    
    System.Threading.Thread SendingThread = new System.Threading.Thread(Send);
    SendingThread.Start(parameters);
    
    
    public void Send(object parameters)
    {
       Array arrayParameters = new object[3];
       arrayParameters = (Array)parameters;
       string str1 = (string)arrayParameters.GetValue(0);
       string str2 = (string)arrayParameters.GetValue(1);
       string str3 = (string)arrayParameters.GetValue(2);
    
       ///Following code here...
    }
    
    0 讨论(0)
  • 2021-02-08 08:30

    You could define a type, that encapsulates the parameters you want to pass and start the thread with a reference to an instance of this type.

    0 讨论(0)
  • 2021-02-08 08:33

    You can define an intermediate method and helper object to do this:

    public void MethodToCallInThread(string param1, string param2)
    {
        ...
    }
    public void HelperMethod(object helper){
        var h = (HelperObject) helper;
        MethodToCallInThread(h.param1, h.param2);
    }
    

    And then you start the thread with the HelperMethod, not with MethodToCallInThread:

    var h = new HelperObject { param1 = p1, param2 = p2 }
    ThreadPool.QueueUserWorkItem(HelperMethod, h);
    
    0 讨论(0)
提交回复
热议问题