1

このプログラムをC#で作成しましたが、「メソッド名が必要です」というエラーが発生します。私は何が間違っているのですか?

for (int i = 0; i < numberofThreads2; i++)     
{   
    Thread thread1 = new Thread(new ThreadStart (Start(1, 2, 3, 4, 5)));
    thread1.Start();
}
4

4 に答える 4

5

スレッドデリゲートを間違って作成しています。試す:

Thread thread1 = new Thread(() => Start(1, 2, 3, 4, 5));
于 2012-07-09T16:42:17.247 に答える
4

ThreadStart署名付きのデリゲートvoid ThreadStart()です。これは、新しいスレッドで委任を渡すのではなく、Start(...)実際にすぐに実行されるを呼び出すことと同じではありません。StartあなたはおそらくThread thread1 = new Thread(() => Start(1, 2, 3, 4, 5));、次のメソッドと同等のラムダを作成するを探しています。これは、ThreadStart:に変換できます。

void myLambda()
{
    Start(1, 2, 3, 4, 5);
}
于 2012-07-09T16:42:54.123 に答える
1

ThreadStartThreadStart はデリゲートであり、その目的はメソッドをカプセル化することであるため、メソッドの名前が必要です。

ここみたいに

public void foo () { }

ThreadStart ts = new ThreadStart(foo);
于 2012-07-09T16:43:46.497 に答える
0
new Thread(()=> Start(1,2,3,4,5)).Start();
于 2012-07-09T16:46:47.113 に答える