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

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

于 2009-04-02T09:56:24.963 回答