标签: c# asynchronous async-await task
我试图同步运行异步任务,并想知道.RunSynchronously()和GetAwaiter().GetResult()之间的区别是什么。
.RunSynchronously()
GetAwaiter().GetResult()
我已经看到.Wait()与这两种方法之间的大量比较,但没有比较一种方法。
.Wait()
答案 0 :(得分:4)
RunSyncronously表示使用当前调度程序在当前线程上运行委托。但是,这适用:
RunSyncronously
如果目标调度程序不支持在调用线程上运行此任务,则将调度该任务以在调度程序上执行,并且调用线程将阻塞,直到任务完成执行
Wait或GetAwaiter().GetResult()根本不安排Task,它只是阻止调用线程直到任务完成。如果从单线程同步上下文调用,此操作可能会死锁。
Wait
Task
MSDN 和Docs