什么时候ThreadPool将一个线程分配给Backgroundworker的一个实例?

时间:2009-04-02 09:52:03

标签: backgroundworker

如果我没错,.NET中的Backgroundworker将从CLR ThreadPool获取一个线程,以执行后台任务。我想实例化一个backgroundworker对象的集合或列表。但是,并非同时调用集合中的所有对象。所以让我担心的是,如果我有10个backgroundworkers对象的集合,CLR ThreadPool将为我分配10个线程,我认为如果我的集合中有太多对象,它将耗尽ThreadPool中的线程。

所以我的问题是,ThreadPool何时会将一个线程分配给BackgroundWorker的一个实例?是在实例化对象时还是在调用方法RunWorkerAsync()时?

提前感谢您的所有帮助

2 个答案:

答案 0 :(得分:0)

这是一个你不应该真正关注的实现细节。不要过早地优化下界。也就是说,不要创建BackgroundWorker的不必要实例,也不要发明复杂的优化逻辑,以便您能够重用这些实例。只需在需要时实例化它们。

答案 1 :(得分:0)

作为对您的问题的回答,BackgroundWorker线程将由RunWorkerAsync中的ThreadPool分配。 您可以研究下一个BackgroundWorker实现,以了解其更多的机制。

BackgroundWorker implementation -in C#