我已经在 C# 中创建了这个程序,但我收到了“预期方法名称”错误。我究竟做错了什么?
for (int i = 0; i < numberofThreads2; i++)
{
Thread thread1 = new Thread(new ThreadStart (Start(1, 2, 3, 4, 5)));
thread1.Start();
}
我已经在 C# 中创建了这个程序,但我收到了“预期方法名称”错误。我究竟做错了什么?
for (int i = 0; i < numberofThreads2; i++)
{
Thread thread1 = new Thread(new ThreadStart (Start(1, 2, 3, 4, 5)));
thread1.Start();
}
您正在创建错误的线程委托。尝试:
Thread thread1 = new Thread(() => Start(1, 2, 3, 4, 5));
ThreadStart
是具有签名的委托void ThreadStart()
。这与 call 不同Start(...)
,后者实际上Start
立即运行,而不是在新线程中传递委托来执行此操作。您可能正在寻找Thread thread1 = new Thread(() => Start(1, 2, 3, 4, 5));
,它创建了一个与以下方法等效的 lambda,该方法可以转换为ThreadStart
:
void myLambda()
{
Start(1, 2, 3, 4, 5);
}
ThreadStart
因为 ThreadStart 是一个委托,它的目的是封装一个方法,所以期待一个方法的名称。
像这儿
public void foo () { }
ThreadStart ts = new ThreadStart(foo);
new Thread(()=> Start(1,2,3,4,5)).Start();