2

我正在尝试创建一个循环,为列表中的每个程序创建一个线程,但是在下面的代码中传递边界时出现“预期方法名称”错误;

for (i = 0; i <= programs.Count; i++)
{
    checkProcess check = new checkProcess();
    // check.isRunning();

    string filename = programs[i].Filename;
    string filepath = programs[i].Filepath;

    mWorkerThread = new Thread(new ThreadStart(check.isRunning(filename, filepath)));

    mWorkerThread.Start();
}

我读了一些关于代表的文章,但似乎无法让他们在我的问题的背景下工作。对于我应该前进的方向,任何帮助将不胜感激。

4

2 回答 2

12

线程目标应该是可执行的,而不是您的方法的结果。

mWorkerThread = new Thread(new ThreadStart(check.isRunning(filename, filepath)));

在上述情况下,您尝试创建一个返回值为ThreadStart新实例。你想要的是像check.IsRunning(...)

mWorkerThread = new Thread( () => check.isRunning(filename, filepath) );
于 2012-04-16T14:59:09.780 回答
2

在您的语句中mWorkerThread = new Thread(new ThreadStart(check.isRunning(filename, filepath))); check.isRunning是在线程开始时调用的方法名称。

Thread t = new Thread(new ThreadStart(ThreadMethod));
t.Start("My Parameter");

// method that will be called
    private void ThreadMethod(object parameter)
    {
        // parameter equals to "My Parameter"
    }

另一个期望是匿名委托方法,使您的方法内联..使用 lambda 表达式:

   Thread t = new Thread(new ThreadStart(()=>ThreadMethod(parmaValue) ));
    t.Start("My Parameter");

参考: 带参数的 ThreadStart

于 2012-04-16T15:11:54.597 回答