等待具有任务的功能完成后再继续

时间:2019-02-06 21:55:23

标签: c# async-await task

在继续执行包含任务内部功能的函数之前,该如何等待?

public void A()
{
    Debug.Log("before")
    CopyInfoFromDB();
    Debug.Log("after") 
}

public void CopyInfoFromDB()
{
    FirebaseDatabase.DefaultInstance.GetReference(path)
             .GetValueAsync().ContinueWith(task =>
             {
                 if (task.IsFaulted)
                 {
                     Debug.Log("failed");

                 }
            name = ...// loading local varibles from Task.result
            });
}

我希望它等待CopyInfoFromDB完成后再打印“之后”。我应该如何不同地编写函数A?

1 个答案:

答案 0 :(得分:-1)

如果您要使用async-await,请准备好使管道中涉及的所有方法也都是异步的

public async Task A()
{
    Debug.Log("before")
    await CopyInfoFromDB();
    Debug.Log("after") 
}

public Task CopyInfoFromDB()
{
      return FirebaseDatabase.DefaultInstance
                             .GetReference(path)
                             .GetValueAsync();
}

如果GetValueAsync失败,则会在您等待它的行上引发异常。