异步方法中,有个Result属性
来源:2-4 【应用】添加第一个API

天蝎卧凤先生
2021-03-22
如果用这个属性,就可以不用await了吧?
写回答
1回答
-
阿莱克斯刘
2024-09-27
在异步方法中,Task 对象确实有一个 Result 属性,但直接使用 Result 属性来获取异步操作的结果并不是最佳实践。以下是一些原因和详细解释:
使用 Result 的问题
1. 阻塞线程: 使用 Result 属性会阻塞当前线程,直到异步操作完成。这与异步编程的初衷相违背,可能导致性能问题和死锁。
2.死锁风险: 在某些情况下,特别是在 UI 线程或 ASP.NET 请求上下文中,使用 Result 可能导致死锁。因为 Result 会阻塞线程,而该线程可能正在等待异步操作完成。
推荐使用 await
使用 await 关键字可以避免上述问题。await 会异步等待任务完成,而不会阻塞线程。00
相似问题