当前位置: 首页 > 编程语言 > C#

aync在异步方法中与Task.Result共享

时间:2023-04-10 14:15:48 C#

aync和Task.Result在异步方法中的区别是什么,执行以下操作:asyncTaskmethod(){varr=awaitdynamodb.GetItemAsync(...)返回r.Item;}VS异步任务方法(){vartask=dynamodb.GetItemAsync(...)returntask.Result.Item;}在我的例子中,出于某种原因只有第二个有效。第一个似乎永远不会结束。await异步解压你的任务结果,而只使用Result块直到任务完成。请参阅JonSkeet的解释。task.Result访问属性的get访问器阻塞调用线程,直到异步操作完成;它相当于调用Wait方法。一旦操作的结果可用,它就会被存储并在随后调用Result属性时立即返回。请注意,如果在任务操作期间发生异常,或者任务已被取消,则Result属性不会返回值。相反,尝试访问属性值会引发AggregateException异常。唯一的区别是await不会阻塞。相反,它将异步等待任务完成然后恢复。—本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: