我想用await Task.Run(DoWork)
, 在 ThreadPool 上做一些重复的单线程计算工作。问题是,我需要在里面使用 STA COM 对象DoWork
,所以我想我不能使用 ThreadPool 因为我不能改变池线程的单元状态。
在这种情况下我如何仍然使用async
/ ?await
使用自定义任务调度程序创建我自己的 STA 线程池听起来像是一项过多的工作。
我想用await Task.Run(DoWork)
, 在 ThreadPool 上做一些重复的单线程计算工作。问题是,我需要在里面使用 STA COM 对象DoWork
,所以我想我不能使用 ThreadPool 因为我不能改变池线程的单元状态。
在这种情况下我如何仍然使用async
/ ?await
使用自定义任务调度程序创建我自己的 STA 线程池听起来像是一项过多的工作。
Stephen Toub 已经写了一个(存档);我建议你使用它。StaTaskScheduler
然后,您可以TaskFactory
使用 that构造一个TaskScheduler
。Task.Run
类型上没有等价物,但您可以使用andTaskFactory
轻松创建一个。StartNew
Unwrap