我们可以传递线程中除void之外的任何方法吗?

时间:2013-04-14 14:27:03

标签: c# multithreading

我正在开发一个帖子。我有一个方法:

private int Calculate(int number);
can I used this method in a thread ?
Thread t = new Thread(new ThreadStart(Calculate));

我们不能这样做,因为ThreadStart()只接受void方法。那么,有没有办法用线程处理它?另外,如果Calculate是void方法,我如何在

中传递参数
thread t = new Thread(new ThreadStart(Calculate));

3 个答案:

答案 0 :(得分:2)

您可以使用ParameterizedThreadStart并将int type参数更改为object并将其强制转换为int。

private int Calculate(object number)
{
   int num = Convert.ToInt32(number);
}

答案 1 :(得分:2)

您可以使用lambdas,编译器将推断其类型:

Thread t = new Thread(() => Calculate(number));

答案 2 :(得分:2)

捕获的变量运作良好:

  int number = 42;
  var thread = new Thread(() => Calculate(number));