2013-10-29 53 views
12

await Task.Run(DoWork)を使用して、ThreadPoolでいくつかの繰り返しシングルスレッド計算を実行したいと思います。問題は、DoWorkの中にSTA COMオブジェクトを使用する必要があるため、私はプールスレッドのアパートの状態を変更できないため、私はThreadPoolを使用できないと思います。Async/await、ThreadPool、SetApartmentState

このシナリオでは、引き続きasync/awaitを使用できますか?カスタムタスクスケジューラを使用して独自のSTAスレッドプールを作成することは、過度の作業のように思えます。

答えて

15

Stephen Toub has already written an StaTaskScheduler;私はそれを使用することをお勧めします。

TaskSchedulerを使用してTaskFactoryを構築することができます。 TaskFactoryタイプにはTask.Runと同等のものはありませんが、簡単にusing StartNew and Unwrapを作成できます。

+0

これはまさに私が探しているものです、ありがとう! – avo

関連する問題