我可以做类似service.GetLocaton(111).Result
的事情,但这可能会造成僵局,
我尝试过
Task.Factory.StartNew
(async () => await service.GetLocaton(),
CancellationToken.None, TaskCreationOptions.None, TaskScheduler.Default).Result.Reult
但这看起来不正确。
答案 0 :(得分:1)
您可以使用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
。