我知道这有答案,但没有一个是清楚的。以下是否有任何区别?
// Option A
var result = Task.Run(() => GetAsync(id)).GetAwaiter().GetResult();
// Option B
var result = Task.Run(async () => await GetAsync(id)).GetAwaiter().GetResult();
其中一种更好还是首选?
为了澄清,使用Task.Run()
的原因是,这是从同步方法调用的,不能将其设置为异步。它不能被异步的原因是它是从剃刀视图调用的,它(在ASP.NET 4.5中)只是同步。使用Task.Run()
的原因是确保我们不会遇到死锁。
编辑这不是链接问题的重复