2009-04-02 15 views
1

Wenn ich nicht falsch bin, wird Backgroundworker in .NET einen Thread von CLR ThreadPool, um Hintergrund-Task durchzuführen. Ich möchte eine Sammlung oder Liste von Hintergrundarbeiter-Objekten instanziieren. Es werden jedoch nicht alle Objekte in der Sammlung gleichzeitig aufgerufen. Was mich beunruhigt, ist, dass CLR ThreadPool, wenn ich eine Sammlung von 10 Hintergrundarbeit-Objekten habe, 10 Threads für mich zuweist, und ich denke, dass es die Threads im ThreadPool verbrauchen wird, wenn ich zu viele Objekte in meiner Sammlung habe.Wenn ThreadPool einer Instanz von Backgroundworker einen Thread zuweist?

Also hier meine Frage, wann wird ThreadPool einen Thread zu einer Instanz von BackgroundWorker zuweisen? Ist es, wenn das Objekt instanziiert wird oder wenn die Methode RunWorkerAsync() aufgerufen wird?

Vielen Dank im Voraus für alle Ihre Hilfe über Dies ist

Antwort

0

eine Implementierung Detail sollte man nicht wirklich betroffen sein. Optimiere nicht unter persisimize vorzeitig. Das heißt, erstellen Sie keine unnötigen Instanzen von BackgroundWorker s und erfinden Sie keine komplexe Optimierungslogik, mit der Sie diese wiederverwenden können. Instantiiere sie einfach, wenn Bedarf entsteht.

0

Als Antwort auf Ihre Frage wird der BackgroundWorker-Thread vom ThreadPool in RunWorkerAsync zugewiesen. Sie können die nächste BackgroundWorker-Implementierung studieren, um mehr über ihren Mechanismus zu erfahren.

BackgroundWorker implementation -in C#

Verwandte Themen