タスクとスレッドがよくわかりません。ネストされた 3 つのレベル内にfor
、異なるスレッド/タスクで複数回実行したいメソッドがありますが、メソッドに渡す変数がおかしくなりました。いくつかのコードで説明しましょう。
List<int> numbers=new List<int>();
for(int a=0;a<=70;a++)
{
for(int b=0;b<=6;b++)
{
for(int c=0;b<=10;c++)
{
Task.Factory.StartNew(()=>MyMethod(numbers,a,b,c));
}
}
}
private static bool MyMethod(List<int> nums,int a,int b,int c)
{
//Really a lot of stuff here
}
これはネストでありmyMethod
、いくつかの数値の階乗を計算したり、さまざまなドキュメントに書き込んだり、応答を組み合わせのリストと照合したり、他の小さなメソッドを呼び出したりするなど、実際には多くのことを行います。いくつかの戻り値 (ブール値) もありますが、私は現時点では気にしないでください。問題は、タスクが終了しないことです。ネストがメソッドを呼び出すたびに、それ自体がリフレッシュされ、以前のインスタンスが削除されます。また、FOR で区切られた値を超える値、たとえばa=71, b=7, c=11
、すべての変数が空 (ゼロで割った理由) で、「0 で除算を試みてください」というエラーが表示されます。私はそれを解決する方法を本当に知りません。