2009-04-02 10 views
1

私が間違っていない場合、.NETのBackgroundworkerは、バックグラウンドタスクを実行するために、CLR ThreadPoolからスレッドを取得します。私はbackgroundworkerオブジェクトのコレクションまたはリストをインスタンス化したいと思います。ただし、コレクション内のすべてのオブジェクトがsametimeで呼び出されるわけではありません。だから、私は10のbackgroundworkersオブジェクトのコレクションを持っている場合、CLR ThreadPoolは私のために10スレッドを割り当てます、私は私のコレクション内のオブジェクトが多すぎる場合、ThreadPoolのスレッドを使い果たしてしまうと思います。ThreadPoolがBackgroundworkerのインスタンスにスレッドを割り当てるとき?

ここで私の質問は、いつThreadPoolはBackgroundWorkerのインスタンスにスレッドを割り当てますか?オブジェクトがインスタンス化されるか、メソッドRunWorkerAsync()が呼び出されたときですか?あなたの助けのすべてを事前に

おかげ

答えて

0

これは、あなたが本当に懸念すべきではない実装の詳細です。 netherを最適化しないでください。つまり、BackgroundWorkerの不要なインスタンスを作成せず、複雑な最適化ロジックを作成して再利用できるようにしないでください。必要に応じてインスタンス化するだけです。

0

あなたの質問に対する答えとして、BackgroundWorkerスレッドはRunWorkerAsync内のThreadPoolによって割り当てられます。 次のBackgroundWorkerの実装を検討して、そのメカニズムの詳細を理解することができます。

BackgroundWorker implementation -in C#

関連する問題