A、B、Cの3つのタスクがあります。
B は C の前に実行する必要がありますが、A は両方と並行して実行できます。これは最近変更されたロジックであり、現在のロジックは正常に機能します。現在のロジックよりも優れたソリューションがあるかどうか疑問に思いました。
public void RunTasks(...) {
Action<IRunnableTask> runner = task =>
{
if (task.ShouldRun(request))
{
task.Run(request, response);
}
};
// run parallel tasks
Parallel.ForEach(parallelTasks, runner);
// run serial tasks
Array.ForEach(serialTasks, runner);
}
ここで、A と B は並列タスクで、C は直列タスクのリストにあります。ここでの問題は、コードが C を開始する前に A が終了するのを待つことです。これは不要です。
それで、きれいな解決策はありますか、それともコールバックなどを入れ始める必要がありますか?