c# - 等待一个无效的异步方法



2 Answers

如果您可以将函数的签名更改为async Task则可以使用here介绍的代码

c# asynchronous

我如何等待一个void async方法来完成它的工作?

例如,我有如下功能:

async void LoadBlahBlah()
{
    await blah();
    ...
}

现在我想确保在继续到别的地方之前,所有东西都已经加载完毕。




您并不需要手动执行任何操作, await关键字暂停执行直到blah()返回。

private async void SomeFunction()
{
     var x = await LoadBlahBlah(); <- Function is paused
     //do more stuff when LoadBlahBlah() returns
}

private async Task<T> LoadBlahBlah()
{
     return await blah();  <- function is paused
}

T是对象的类型blah()返回

你不能真正await void函数,所以LoadBlahBlah()不能是void




Related