如何调用一个在线程中接受多个参数的方法?

时间:2010-08-30 07:59:52

标签: c# multithreading

我正在构建一个C#Desktop应用程序。 如何调用在线程中接受多个参数的方法。 我有一个名为Send的方法(字符串arg1,字符串arg2,字符串arg3),我需要使用名为SendingThread的线程调用此方法。任何人都可以帮忙吗? 任何帮助将不胜感激。

4 个答案:

答案 0 :(得分:23)

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

答案 1 :(得分:2)

您可以定义一个类型,它封装您想要传递的参数,并通过引用此类型的实例来启动该线程。

答案 2 :(得分:1)

您可以定义一个中间方法和辅助对象来执行此操作:

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

然后您使用HelperMethod启动帖子,而不是MethodToCallInThread

var h = new HelperObject { param1 = p1, param2 = p2 }
ThreadPool.QueueUserWorkItem(HelperMethod, h);

答案 3 :(得分:-1)

这可能会有所帮助。您可以按如下方式定义Send方法,然后可以使用参数。

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...
}