以下是我简化后的代码,它会生成以下编译错误:
在这种情况下,GetDataAsync方法不需要返回任何内容。我该如何使其返回一个可等待的任务(Task)?无法将类型“void”隐式转换为类型“System.Threading.Tasks.Task”
static async void Run()
{
List<string> IDs = new List<string>() { "a", "b", "c", "d", "e", "f" };
Task[] tasks = new Task[IDs.Count];
for (int i = 0; i < IDs.Count; i++)
tasks[i] = await GetDataAsync(IDs[i]);
Task.WaitAll(tasks);
}
async static Task GetDataAsync(string id)
{
var data = await Task.Run(() => GetDataSynchronous(id));
// some other logic to display data in ui
}
GetDataAsync
返回一个任务,但是Run
没有。async void
应该仅用于事件处理程序。 - John Koerner