如果我没错,.NET中的Backgroundworker将从CLR ThreadPool获取一个线程,以执行后台任务。我想实例化一个backgroundworker对象的集合或列表。但是,并非同时调用集合中的所有对象。所以让我担心的是,如果我有10个backgroundworkers对象的集合,CLR ThreadPool将为我分配10个线程,我认为如果我的集合中有太多对象,它将耗尽ThreadPool中的线程。
所以我的问题是,ThreadPool何时会将一个线程分配给BackgroundWorker的一个实例?是在实例化对象时还是在调用方法RunWorkerAsync()时?
提前感谢您的所有帮助
答案 0 :(得分:0)
这是一个你不应该真正关注的实现细节。不要过早地优化下界。也就是说,不要创建BackgroundWorker
的不必要实例,也不要发明复杂的优化逻辑,以便您能够重用这些实例。只需在需要时实例化它们。
答案 1 :(得分:0)
作为对您的问题的回答,BackgroundWorker线程将由RunWorkerAsync中的ThreadPool分配。 您可以研究下一个BackgroundWorker实现,以了解其更多的机制。