我有:
async void getData()
{
Console.WriteLine("Start");
HttpClient api = new HttpClient();
await api.PostAsync("http://....", someContent).ContinueWith(
....
);
Console.WriteLine("End");
}
void main()
{
Task task = new Task(getData);
task.Start();
task.Wait();
Console.WriteLine("Returned");
}
我一直得到以下输出:
Start
Returned
End
在控制返回到调用方法后,如何执行getData方法的结束?
答案 0 :(得分:3)
更改
async void getData()
到
async Task getData()
您应该使用async void
的唯一地方是事件处理程序,例如WPF应用程序中的按钮单击。不使用它的原因是因为你需要返回一些可以等待的东西并且返回void有效地否定了它。
此外,无需创建新任务。您可以按如下方式重写:
void main()
{
Task task = getData();
task.Wait();
Console.WriteLine("Returned");
}