我可以做一些类似service.GetLocaton(111).Result
的事情,但这可能会死锁,我试过
Task.Factory.StartNew
(async () => await service.GetLocaton(),
CancellationToken.None, TaskCreationOptions.None, TaskScheduler.Default).Result.Reult
但这看起来并不正确。
您可以使用Task.Run(() => ...).Result
。请注意,最好始终使用async/await,或者保持完全同步。但有时你需要一个变通方法,我在这里显示的代码总是安全的(例如在ASP.NET中(。
没有Task.Run
,你可以写:
Task.Factory.StartNew(
async () => await service.GetLocaton(),
CancellationToken.None,
TaskCreationOptions.None,
TaskScheduler.Default).Unwrap().Result
重要的一点是,service.GetLocaton()
是在没有设置SynchronizationContext
的线程上调用的。