出于此处StaTaskScheduler
所述的原因,我正在使用 Stephen Toub 。
据我了解,任务调度是Task Scheduler的职责,而await
Continuation是Synchronization Context的职责(如有错误请指正)。
现在我想await
在由StaTaskScheduler
. 我应该安装自定义同步上下文,以确保代码执行将在同一个STA 线程上继续await
吗?
出于此处StaTaskScheduler
所述的原因,我正在使用 Stephen Toub 。
据我了解,任务调度是Task Scheduler的职责,而await
Continuation是Synchronization Context的职责(如有错误请指正)。
现在我想await
在由StaTaskScheduler
. 我应该安装自定义同步上下文,以确保代码执行将在同一个STA 线程上继续await
吗?
默认情况下,await
将捕获当前SynchronizationContext
,除非它是null
,在这种情况下,它将捕获当前TaskScheduler
。
所以,答案是否定的,您不需要安装自定义SynchronizationContext
. 在由 执行的任务中使用时StaTaskScheduler
,await
默认情况下将捕获该任务调度程序并继续执行由该任务执行的另一个任务StaTaskScheduler
。
请注意,它StaTaskScheduler
确实维护了STA 线程的集合,并且可以在任何这些线程上执行延续。如果这是不可接受的,则需要将其限制StaTaskScheduler
为单个线程(通过传递1
给其构造函数)。