.net - 需要在异步调用时等待(),但好的做法是不要阻止异步
问题描述
我刚开始使用async
并且await
正在努力巩固我的理解。我想保证异步函数完成。
据我了解,await
实际上并不能保证异步函数会运行(但会保存状态并跟踪异步函数的调用者停止的位置)。
因此,为了保证异步任务完成,我已经尝试过Task.Delay(1000)
,但不认为这是值得生产的代码。我正在使用.Wait()
,另一篇stackoverflow帖子说这是不好的做法,因为它将同步调用与异步调用混合在一起(.Wait(), .Result()
都是同步块)。
如何在不使用.wait()
or的情况下保证异步调用的完成.result()
?
解决方案
在不使用 .wait() 或 .result() 的情况下如何保证异步调用的完成?
Wait
/Result
将同步阻塞,直到异步调用完成。
await
将异步等待该异步调用完成。
它们都提供相同级别的“保证”。
推荐阅读
- python - 更改特定列中的值(熊猫)
- html5-canvas - 如何检测对象是否在html5移相器中
- python-3.x - 打包软件:错误收集测试/ TOX
- python - 完全嵌套 NumPy 结构化标量
- visual-studio-2017 - 在visual studio installer2017如何选择DotNet40 prerequiste?
- php - MySQL触发器在PHP中不起作用
- swift - 如何从另一个对象的引用中查询 Realm 对象?
- java - Maven 投影创建错误
- sql-server - SQL Server 密码恢复
- php - 删除另一个查询的本地范围 eloquent