一个异步方法中有多个可等待

本文关键字:等待 异步方法 一个 | 更新日期: 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实例完成之前不会被调用,而GetResultAsyncFinalSave返回的两个Task实例都完成之后才会被调用。

您对async/await的使用和您请求的行为是一致的。你能提供更多信息吗?我相信你的问题不在于显示的代码。