提问人:Ricardo Peres 提问时间:11/1/2023 最后编辑:Theodor ZouliasRicardo Peres 更新时间:11/2/2023 访问量:84
在 .NET 中同步运行异步代码 [duplicate]
Running asynchronous code synchronously in .NET [duplicate]
问:
我知道应该不惜一切代价避免这种情况,但有时,它只需要发生:我们需要同步运行异步代码。 我想知道的是,这两段代码是否有任何差异和/或是否有首选方法,或者是否有更好的替代方案:
//#1
Task.Run(async () =>
{
await someObject.ProcessAsync();
}).ConfigureAwait(false).GetAwaiter().GetResult();
或者只是简单明了:
//#2
someObject.ProcessAsync().ConfigureAwait(false).GetAwaiter().GetResult();
选项 #1 使用了 / 关键字和所有相关的语法糖,但不确定这是否一定使它变得更好。async
await
答: 暂无答案
评论
.GetAwaiter().GetResult()
.ConfigureAwait(false)
Task.Run
.GetAwaiter().GetResult()
.ConfigureAwait(false)
await
ConfigureAwait