【问题标题】:When ThreadPool allocate a thread to an instance of Backgroundworker?ThreadPool 何时将线程分配给 Backgroundworker 的实例?
【发布时间】:2009-04-02 09:52:02
【问题描述】:

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

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

提前感谢您的所有帮助

【问题讨论】:

    标签: backgroundworker


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      BackgroundWorker implementation -in C#

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-04-19
        • 2014-05-26
        • 1970-01-01
        • 1970-01-01
        • 2019-02-23
        • 2013-05-17
        • 2018-03-19
        • 2011-06-21
        相关资源
        最近更新 更多