我想用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轻松创建一个。StartNewUnwrap