.net 需要在异步调用时等待(),但良好的做法是不要阻止异步调用
我刚开始使用.net 需要在异步调用时等待(),但良好的做法是不要阻止异步调用,.net,asynchronous,.net,Asynchronous,我刚开始使用async和wait并试图巩固我的理解。我想保证异步函数完成 据我所知,await实际上并不保证异步函数将运行(而是保存状态并跟踪异步函数的调用方停止的位置) 因此,为了保证异步任务完成,我尝试了task.Delay(1000),但我认为这不是值得生产的代码。我使用的是.Wait(),另一篇stackoverflow帖子说这是一种糟糕的做法,因为它混合了同步调用和异步调用(.Wait(),.Result()都是同步块) 如何保证在不使用.wait()或.result()的情况下完成异
async
和wait
并试图巩固我的理解。我想保证异步函数完成
据我所知,await
实际上并不保证异步函数将运行(而是保存状态并跟踪异步函数的调用方停止的位置)
因此,为了保证异步任务完成,我尝试了task.Delay(1000)
,但我认为这不是值得生产的代码。我使用的是.Wait()
,另一篇stackoverflow帖子说这是一种糟糕的做法,因为它混合了同步调用和异步调用(.Wait(),.Result()
都是同步块)
如何保证在不使用.wait()
或.result()
的情况下完成异步调用
如何保证在不使用.wait()或.result()的情况下完成异步调用
等待
/结果
将同步阻止,直到异步调用完成
wait
将异步等待,直到异步调用完成
它们都提供相同级别的“保证”。等待异步方法:
public async void Main()
{
var result = await AsyncMethodAsync();
}
保证在异步方法结束时从asynchmethodasync()
填充结果变量,或者在asynchmethodasync()内部发生异常时引发异常。
调用
.Result
或Wait()
不保证任何事情,并且阻塞了主线程不是完整的答案,而是。Wait
和。Result
是等待完成的方法。他们可能不是最好的,但他们工作。另一篇文章可能意味着您通常应该编写允许异步调用的代码,但有时您只需要执行同步调用,这就是为什么这些方法存在的原因。