1

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

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

ご協力いただきありがとうございます

4

2 に答える 2

0

ご質問への回答として、BackgroundWorker スレッドは RunWorkerAsync の ThreadPool によって割り当てられます。次の BackgroundWorker 実装を調べて、そのメカニズムをさらに理解することができます。

BackgroundWorker の実装 - C# で

于 2009-06-11T17:17:27.333 に答える
0

これは、実際に気にする必要のない実装の詳細です。Nether perssimize を時期尚早に最適化しないでください。つまり、 の不要なインスタンスを作成しBackgroundWorkerたり、それらを再利用できる複雑な最適化ロジックを発明したりしないでください。必要に応じてインスタンス化するだけです。

于 2009-04-02T09:56:24.963 に答える