C#Threadstart错误

时间:2011-12-29 17:36:07

标签: c# multithreading

我想为一个简单方法启动一个新线程,但该方法有我需要传递的变量。

    Thread tempmovethread = new Thread(new ThreadStart(widget.moveXYZINCHES(xval,yval,zval));

我收到错误:“预期方法名称”。

这是正确的方法名称,我在早期的代码中做了一些非常类似的东西并且它起作用,唯一的区别是我之前调用的方法不需要传递任何变量:

    executethread = new Thread(new ThreadStart(execute.RunRecipe));

是否可以启动一个新线程并传递这样的变量,或者我是否必须以另一种方式进行?

2 个答案:

答案 0 :(得分:3)

tempmovethread = new Thread(new ParametrizedThreadStart(widget.moveXYZINCHES); tempmovethread.Start(new [] {xval,yval,zval});

<强> BUT

你应该像这样适当地改变方法的签名(假设使用的参数是int类型:

public void moveXYZINCHES(object state)
{
  int xval = (state as int[])[0],yval = (state as int[])[1],zval = (state as int[])[2];
  ...your code
}

答案 1 :(得分:3)

使用Action创建正确的委托类型。

Thread tempmovethreading = new Thread(new ThreadStart(new Action(() => widget.moveXYZINCHES(xval,yval,zval)));