2009-04-02 6 views
1

Si je ne me trompe pas, Backgroundworker dans .NET recevra un thread de CLR ThreadPool, afin d'effectuer une tâche en arrière-plan. Je voudrais instancier une collection ou une liste d'objets d'arrière-plan. Cependant, tous les objets de la collection ne seront pas appelés dans le même temps. Donc ce qui m'inquiète, c'est que si j'ai une collection de 10 objets backgroundworkers, CLR ThreadPool va allouer 10 threads pour moi, et je pense qu'il utilisera les threads dans le ThreadPool si j'ai trop d'objets dans ma collection.Lorsque ThreadPool affecte un thread à une instance de Backgroundworker?

Alors, voici ma question, quand ThreadPool va allouer un thread à une instance de BackgroundWorker? Est-ce lorsque l'objet est instancié ou lorsque la méthode RunWorkerAsync() est appelée?

Merci à l'avance pour toute votre aide

Répondre

0

Ceci est un détail de mise en œuvre, vous ne devriez pas vraiment préoccupé. N'optimisez pas non plus perssimize prématurément. C'est-à-dire, ne créez pas d'instances inutiles de BackgroundWorker et n'inventez pas de logique d'optimisation complexe grâce à laquelle vous pourrez les réutiliser. Instanciez-les simplement au besoin.

0

En réponse à votre question, le thread BackgroundWorker sera alloué par ThreadPool dans RunWorkerAsync. Vous pouvez étudier l'implémentation BackgroundWorker suivante pour mieux comprendre son mécanisme.

BackgroundWorker implementation -in C#

Questions connexes