2010-12-22 16 views
2

System.Windows.Threading名前空間のDistpatcherが好きで、このオブジェクトをクラスライブラリで使用したいと考えています。しかし、それはWPFのために作成され、UI固有のようだから、私はクラスライブラリでそれを使用することによって意図した目的を悪用しているように感じる。スレッドでの作業キューの作成

同じ目的(スレッドの作業項目のキューを作成する)を提供する他のクラスが存在するかどうかは疑問に思っていますが、クラスライブラリでの使用を想定しています。基本的には、スレッドを作成し、別のスレッドから非同期に多数のデリゲートをキューに入れて実行するだけです。

私はかなり簡単にビルドすることができましたが、私は標準的な規約に従い、すでに実績のあるものを使用することをお勧めします。前もって感謝します。

答えて

1

BlockingCollectionは、あなたが必要とするものです。 Takeメソッドは、アイテムがキューに表示されるまでブロックし、プロデューサとコンシューマのようなシナリオのこれらのタイプに最適です。

+0

私はこの解決策の単純さが大好きです。私は別のAPIを覚える必要はなく、すぐに必要なものを解決します。しかし、私はTim BarrassのソリューションのTPLのタスクの機能は、私が最終的に学ぶ必要があるものだと思います。 – Verax

1

TPLには、作業キューを処理するためにインスタンス化できるタスクスケジューラがあります。 this msdn linkをチェックしてください。デフォルトでは、あなただけでにタスクを追加することができるはずグローバルのThreadPoolを使用することです:あなたはより洗練されたキュー管理は、あなたがあなた自身のtaskschedulerを実装することができますしたい場合は

Task myTask = Task.Factory.StartNew(() => 
{     
    Console.WriteLine("Hello, I'm a queued task."); 
}); 

- を介した多くの例があります上記のmsdnリンク。

関連する問題