当从一个可以说的UI线程中调用一个异步方法时,如果运行时偶然遇到一个等待行,它将把等待的任务交给工作线程并释放UI线程。基于这个问题,我的问题是,当异步方法具有多个等待并且对于ConfigureAwait
错误或真实情况时,运行时是否每次遇到等待块时都会切换线程?如果是这样,这是否会导致多次等待的方法中发生大量线程切换?
请参见下面的代码
static async Task MainAsync()
{
/* worker thread takes over */
await awaitable;
/* worker thread or the original thread
* (depending on configure await)
* hands execution over to another worker thread? */
await anotherawaitable;
}
是这种情况吗?