PPL 任务何时在 UI 线程上执行?

When does a PPL task execute on the UI thread?

当调用 create_task 时,有没有办法确保任务不会 运行 在 UI 线程上?

我想确定我没有无意中在任务中调用等待,该任务以某种方式设法在 UI 线程上执行。

create_task 函数不会自动跳转到 UI 线程:如果您不从 UI 线程调用它,它就不会在那里执行。您需要显式调用 Dispatcher 才能返回。

单元感知任务(returns IAsyncAction 或 IAsyncOperation)默认情况下将在其单元中继续,如果未提供 task_continuation_context 以其他方式通知它。在 UI 线程上启动任务的常见情况将在 UI 线程上继续。

有关详细信息,请参阅 MSDN Asynchronous programming in C++ 文档的管理线程上下文部分。