我有以下异步代码:
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);
但我很困惑我应该如何在这里实现它。