c# TaskScheduler を使用していくつかのタスクを開始していますが、何らかの方法で TaskCanceledException をスローしています。タスクが呼び出す関数をすべて実行しましたが、問題なく完了し、例外はまったくスローされません。私はIEnumerableを使用しており、マスタータスク関数の一部にyieldを使用していますが、それがタスクに問題を引き起こすかどうかはわかりません。私は今とても迷っています。コードに問題はなく、タスク スレッドで確認できる失敗もありません。
コードを以下に簡略化しましたが、これが構造です。
Action[] Jobs = new Action[] { Job1(), Job2(), etc };
Task[] Tasks = new Task[Jobs.Length];
try
{
int I = 0;
foreach (Action Act in Jobs)
{
Tasks[I] = Task.Factory.StartNew(() => Act());
I++;
}
Task.WaitAll(Tasks, 300000);
}
catch (AggregateException AgEx) { throw AgEx.Flatten(); }
私もこれを試しましたが、うまくいきます
Thread NewJob = new Thread(() => DoJob());
NewJob.IsBackground = true;
NewJob.Start();
NewJob.Join(300000);