gpt4 book ai didi

c# - StaTaskScheduler 并等待继续

转载 作者:行者123 更新时间:2023-11-30 14:58:05 24 4
gpt4 key购买 nike

我正在使用 Stephen Toub 的 StaTaskScheduler由于描述的原因here .

据我理解,任务调度是Task Scheduler的职责,而await的延续是Synchronization Context的职责(如有错误请指正)

现在我想在由 StaTaskScheduler 创建的 STA 线程之一上运行的任务代码中使用 await。我是否应该安装自定义同步上下文,以确保在 await 之后代码将在 相同 STA 线程上继续执行?

最佳答案

我在 intro to async blog post 中介绍了 await 行为.

默认情况下,await 将捕获当前的 SynchronizationContext 除非它是 null,在这种情况下它将捕获当前的 TaskScheduler

所以,答案是否定的,您不需要安装自定义 SynchronizationContext。当在由 StaTaskScheduler 执行的任务中使用时,await 将默认捕获该任务调度程序并恢复由该 StaTaskScheduler 执行的另一个任务。

请注意,StaTaskScheduler 确实维护了一个 STA 线程的集合,并且延续可以在这些线程中的任何一个上执行。如果这是 Not Acceptable ,您需要将 StaTaskScheduler 限制为单个线程(通过将 1 传递给它的构造函数)。

关于c# - StaTaskScheduler 并等待继续,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19789266/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com