lif*_*ode 7 .net c# asynchronous if-statement async-await
我想知道以下代码是否会在执行主线程之前等待异步方法完成,或者只是在条件时继续主线程并将方法返回为false.
public async Task<bool> SomeMethod
{
if(await AsyncMethod(param))
{
//Do something
}
}
Run Code Online (Sandbox Code Playgroud)
...
异步方法定义为:
public async Task<bool> AsyncMethod(SomeClass param)
{
//Do something
}
Run Code Online (Sandbox Code Playgroud)
我想知道以下代码是否会在执行主线程之前等待异步方法完成,或者只是在条件时继续主线程并将方法返回为false.
都不是.
await是一个"异步等待".换句话说,该方法将等待,但线程不会.
当你的方法遇到它时await(假设它实际上有一些等待做),它会立即将一个不完整的任务返回给调用者SomeMethod.线程继续做它想做的事情.稍后,当等待的任务完成时,SomeMethod将继续执行.当SomeMethod完成时,它前面返回的任务将完成.
我在关于这个主题的博客文章中详细介绍了.
它将等待操作完成。
请注意您如何调用该操作:
if(await AsyncMethod(param))
Run Code Online (Sandbox Code Playgroud)
两件事情:
await关键字将等待操作完成。bool可以用在条件句中,而 aTask<bool>则不能。