一个异步方法中有多个可等待
本文关键字:等待 异步方法 一个 | 更新日期: 2024-06-14 01:52:25
我有一个异步方法Save,它在内部调用CompleteTaskAsync方法,如下所示:
public async void Save()
{
await CompleteTaskAsync();
MessageBox.Show("TaskCompleted");
}
private async Task CompleteTaskAsync()
{
int someResult = await GetResultAsync();//Does some calculation which take few seconds.
await FinalSave(someResult);//Note: This method also interact UI internally
}
CompleteTaskAsync调用两个方法,其中第二个方法使用第一个方法的输出。
在当前情况下,MessageBox是在调用第一个方法(GetResultAsync)之后出现的,而没有调用第二个方法(FinalSave)。
我希望在显示消息之前执行两个等待方法。在返回到其调用方法之前,是否有任何方法可以执行这两个等待方法。
MessageBox.Show("TaskCompleted");
在CompleteTaskAsync
返回的Task
实例完成之前不会被调用,而GetResultAsync
和FinalSave
返回的两个Task
实例都完成之后才会被调用。
您对async
/await
的使用和您请求的行为是一致的。你能提供更多信息吗?我相信你的问题不在于显示的代码。