次の非同期コードがあります。
public async Task<List<PreprocessingTaskResult>> Preprocess(Action onPreprocessingTaskFinished)
{
var preprocessingTasks = BuildPreprocessingTasks();
var preprocessingTaskResults = new List<PreprocessingTaskResult>();
while (preprocessingTasks.Count > 0)
{
//Wait till at least one task is completed
await TaskEx.WhenAny(preprocessingTasks.ToArray());
onPreprocessingTaskFinished();
}
return
}
そして、非同期使用コード
var preprocessingTaskResults = await Preprocess(someAction);
場合によっては、同期的に呼び出す必要があります。より単純なケース(非同期メソッドがタスクのみを返す場合)の場合、私は次のことを行っていました。
var someTask = AsyncMethod();
Task.Wait(someTask);
しかし、ここでそれをどのように実装すべきか混乱しています。