.RunSynchronously()和GetAwaiter()之间的区别.GetResult()?

时间:2018-02-22 16:34:18

标签: c# asynchronous async-await task

我试图同步运行异步任务,并想知道.RunSynchronously()GetAwaiter().GetResult()之间的区别是什么。

我已经看到.Wait()与这两种方法之间的大量比较,但没有比较一种方法。

1 个答案:

答案 0 :(得分:4)

RunSyncronously表示使用当前调度程序在当前线程上运行委托。但是,这适用:

  

如果目标调度程序不支持在调用线程上运行此任务,则将调度该任务以在调度程序上执行,并且调用线程将阻塞,直到任务完成执行

另一方面,

WaitGetAwaiter().GetResult()根本不安排Task,它只是阻止调用线程直到任务完成。如果从单线程同步上下文调用,此操作可能会死锁。

MSDNDocs