问题:
在单线程控制台应用程序中,如何由于线程被task.Wait()锁定,await关键字之后的代码可以执行吗?是否有新线程接管,或者主线程以某种方式离开task.Wait()来运行后续代码?
答案:
执行机制:
当像MyAsyncMethod()这样的异步方法中遇到await关键字时,剩余的方法中的代码被视为延续。 wait 关键字有效地暂停方法的执行,直到挂起的任务(例如 MyOtherAsyncMethod())完成。
线程延续:
默认情况下,延续异步方法与await 关键字之前的代码在相同的同步上下文上运行。对于 UI 应用程序,这意味着等待之后的代码将在主 UI 线程上执行。
单线程应用程序中的场景:
中但是,在单线程控制台应用程序中,调用 task.Wait() 会阻止主线程的执行。因此,await 之后的延续代码无法执行,因为线程被有效锁定。
解决方案:
要允许延续代码在单线程应用程序中运行,您有两个选择:
以上是单线程应用程序中的'await”后如何恢复代码执行?的详细内容。更多信息请关注PHP中文网其他相关文章!