gpt4 book ai didi

c# - 如何阻止 BackgroundWorker 排队?

转载 作者:行者123 更新时间:2023-11-30 14:12:28 27 4
gpt4 key购买 nike

我有以下代码:

for (int i = 1; i <= 500; i++)
{
BackgroundWorker t = new BackgroundWorker();

t.DoWork += SOME DB METHOD THAT TAKES 5 SECONDS
t.RunWorkerAsync();
}

当我在 SQL 中对此进行概要分析时,我注意到 BackgroundWorker 似乎以这样一种方式对线程进行排队,即只有 4 或 5 个事件连接同时打开,而不是所有 500 个连接打开立刻。我的数据库没有超时或阻塞。我怎样才能防止这种排队并同时使用所有 500 个并发线程访问数据库?

最佳答案

BackgroundWorker 使用线程池。您可以使用 ThreadPool.SetMinThreadsThreadPool.SetMaxThreads 调整线程池。如果实际上有可能与您的数据库服务器建立那么多连接可能是另一个问题(并导致其他问题)。

但是,不推荐启动500个BackgroundWorker实例!带有任务类的“任务并行库”可以提供更好的解决方案。

关于c# - 如何阻止 BackgroundWorker 排队?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17427214/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com