想象一下你有一种形式的控件或另一种形式的场景。它可以是WP8上的页面,也可以是WinForms中的表单,我觉得它不重要(或者它是什么?)。在某些时候,你在一个方法上调用await,但不久之后控件就被用户关闭了。
您正在等待的任务会怎样?它会继续执行吗?如果它返回,它返回到哪里?如果取消,是否会抛出异常?
最后,有没有办法指定您希望执行继续/完成?
答案 0 :(得分:4)
Task
继续执行。它不能是任何其他方式,因为运行代码只能合作中止(不考虑这里的邪恶Thread.Abort
。)
Task
对其环境一无所知。获取完成通知并尝试在捕获的SynchronizationContext
上恢复异步方法的等待者。
完全取决于SynchronizationContext
会发生什么。有许多不同的可能背景,完整的答案取决于您的GUI框架。