このプログラムを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()です。これは、新しいスレッドで委任を渡すのではなく、Start(...)実際にすぐに実行されるを呼び出すことと同じではありません。StartあなたはおそらくThread thread1 = new Thread(() => Start(1, 2, 3, 4, 5));、次のメソッドと同等のラムダを作成するを探しています。これは、ThreadStart:に変換できます。
void myLambda()
{
Start(1, 2, 3, 4, 5);
}
ThreadStartThreadStart はデリゲートであり、その目的はメソッドをカプセル化することであるため、メソッドの名前が必要です。
ここみたいに
public void foo () { }
ThreadStart ts = new ThreadStart(foo);
new Thread(()=> Start(1,2,3,4,5)).Start();