异步/等待、线程池和设置公寓状态

13
我想使用await Task.Run(DoWork)在线程池上执行一些重复的单线程计算工作。问题是,我需要在DoWork中使用STA COM对象,所以我猜不能使用线程池,因为我不能更改池线程的公寓状态。
在这种情况下,我如何仍然使用async/await? 使用自己的STA线程池和自定义任务调度程序似乎太过复杂。
1个回答

16

Stephen Toub已经编写了一个StaTaskScheduler(存档)。 我建议您使用它。

然后,您可以使用该TaskScheduler构建TaskFactory。在TaskFactory类型上没有类似于Task.Run的等效方法,但是您可以轻松地创建一个使用StartNewUnwrap的方法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接