开发者

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

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 need to call this method using a thread called SendingThread. Can anyone help out with this? Any help will be much appreciated开发者_如何学Go.


Thread thread = new Thread(() => Send(arg1, arg2, arg3));
thread.Start();


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.


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);


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

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜