限制线程数

2023-12-02

我有一个包含我要下载的项目的列表。我使用 for 循环来迭代列表。

对于此列表中的每个项目,我启动一个引用该项目的新线程。我的问题是我想同时限制 maxDownload。

for (int i = downloadList.Count - 1; i >= 0; i--)
{
    downloadItem item = downloadList[i];
    if (item.Status != 1 && item.Status != 2)
    {
        ThreadStart starter = delegate { this.DownloadItem(ref item); };
        Thread t = new Thread(starter);
        t.IsBackground = true;
        t.Name = item.Name;
        t.Priority = ThreadPriority.Normal;
        t.Start();
    }
}

我读了一些有关 ThreadPool 的内容,但后来我无法引用我的项目。有人能帮我吗?谢谢! :)

Edit:

我测试了这个:

ThreadPool.SetMaxThreads(maxDownloads, maxDownloads);
ThreadPool.SetMinThreads(maxDownloads, maxDownloads);
ThreadPool.QueueUserWorkItem(DownloadItem, ref item);

我不知道如何用这个线程引用我的 downloadItem......


如果您使用 .NET 4,我强烈建议使用并行.ForEach(可能在 downloadList.Reverse() 上)

所以,像这样:

Parallel.ForEach(downloadList.Reverse(), 
                 new ParallelOptions { MaxDegreeOfParallelism = 8 },
                 item => this.DownloadItem(item));

如果您不希望调用线程阻塞,当然可以使用 QueueUserWorkItem 这个调用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

限制线程数 的相关文章

  • 为什么这个 IA32 汇编代码有 3 个 leaal 指令?

    我编译了这个C函数 int calc int x int y int z return x 3 y 19 z 我在 calc s 中得到了这个 我正在注释正在发生的事情 file calc c text globl calc type ca
  • 如何获取网络服务的状态

    如何使用 C 获取 Web 服务的状态 无论是成功完成 失败还是待处理 private void button1 Click object sender EventArgs e var url servicsURL try var myRe
  • 寻求有关 cs50“现金”问题集的 C 贪婪算法的帮助[已关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 目标是创建一种算法 该算法接受输入并给出从输入中减去值 25 10 5 1 的次数的输出 代码需要以尽可能贪婪的方式执行此操作 尽可能获取最
  • 嵌套绑定表达式

    这是一个后续问题我之前的问题 https stackoverflow com questions 2735294 templates function pointers and c0x include
  • 如何使用 CMake 链接多个库

    我有一些与 DCMTK 相关的代码 如果我从命令行使用 g 我可以成功构建并运行它 这是代码 include dcmtk config osconfig h include dcmtk dcmdata dctk h int main Dcm
  • 使用 rhino 模拟进行 lambda 单元测试失败

    如果我有这个测试 Expect Call session Single
  • 除非我在开​​始时声明变量,否则为什么会收到“错误未声明的标识符”?

    当我有以下情况时 include stdafx h include
  • 更改 Json 中属性的键

    这些天我正在尝试制作一个 json 编辑器 与树视图一起使用 我确实更改了值函数 我也可以更改一些键 但我无法在对象中设置键 我可以设置值 SetValue ref JObject main JToken token JToken newV
  • 文件已创建但无法写入

    我的计划 检查Settings txt 文件 如果该文件不存在 则创建文本并自动写入其中 如果 Settings txt 文件已存在 请忽略 不要创建或写入现有文件 我的问题 当文件不存在时 Settings txt 文件会创建 但它是空的
  • 即使在不活动状态下,Hangfire 也会继续运行 SQL 查询

    我正在开发一个 ASP net MVC 5 网站 并使用 Hangfire 来安排一些任务 在本例中每 3 分钟一次 我知道一个事实是 运行这样的任务 以及与之相关的数据库查询 只需要几秒钟 我面临的问题是 Hangfire 似乎让我的 S
  • dotnet core 创建文件名中不含“CoreFxPipe_”的命名管道

    使用以下命令创建命名管道时命名管道客户端流 or 命名管道服务器流dotnet core 的类中 关联的 管道 看起来实际上是一个套接字 已自动将 CoreFxPipe 添加到文件名的前面 有没有一种非黑客的方法来防止这种行为 我只是希望文
  • llvm clang 编译器上的dynamic_cast失败

    我看到一个奇怪的失败dynamic cast正在返回NULL在 clang 编译器上 但相同的代码可以在 gcc 环境下运行 您能否指出根本原因是什么 之间可能有什么区别dynamic cast关于 llvm 和 gcc 我正在使用两个编译
  • 在多个线程中添加和删除时 List 中的 null 值

    我知道 C System Collections Generic List 对象不是线程安全的 但我想知道为什么这段代码会生成空值 Task Run gt for var i 0 i lt 10 i var str Test i list
  • OpenFileDialog 中的多个文件扩展名

    如何在一组中使用多个文件扩展名OpenFileDialog 我有Filter BMP bmp GIF gif JPG jpg PNG png TIFF tiff 我想创建组 以便 JPG 为 jpg 和 jpeg TIFF 为 tif 和
  • boost::bind 会导致开销吗?

    我目前正在从事网络软件方面的工作 它有一个主要类 server这显然代表一个服务器实例 A server实例可以发送请求 并通过回调通知用户响应 代码如下 class server public typedef boost function
  • Pythonlibs3 CMake 和 macOS

    更新2 将以下两行添加到我的 CMake 文件中时 成功找到了 python 3 及其库 这只在终端中工作的原因是因为 CLion 使用其捆绑版本的 CMake 3 6 3 而我的终端使用的更新版本 3 7 2 正确找到了 python F
  • 是否可以使用 struct stat 描述符获取和设置文件名?

    是否可以在获取或设置 重命名 文件名时给出文件的绝对路径 并将 struct stat 实例作为 lstat 函数的参数 正如我在文档结构中发现的那样 struct stat dev t st dev ID of device contai
  • 将变量传递给 SSIS 中的项目参数

    我是这个网络的新手 希望我能找到这个问题的答案 我有一个 SSIS 项目 其中包含多个使用项目参数的包 我正在尝试更新项目参数 例如 PeriodStart 2014年5月31日 我找不到动态写入项目参数的方法 我在 4 0 框架中使用 V
  • 我如何在 WPF 中模仿这种行为?

    我对 WPF 和 C 开发相当陌生 我正在制作这个应用程序 我不知道是否有人熟悉 VOIP App Discord 但他们有一个我非常喜欢的特定行为 并且想尝试使用 WPF 创建类似的风格 当您在 Discord 上添加服务器时 单击一个按
  • Windows 安装程序 (C#) 错误代码 2869

    我在 VS 2005 中有一个项目 其中有一个控制台应用程序和一个与安装该应用程序关联的安装项目 我在控制台应用程序中还有一个安装程序类 安装项目将使用它在安装前进行一些验证 这些任务正在检查数据库连接字符串并检查某些目录位置以确保它们在安

随机推荐

  • PHP - 从上传的 Microsoft Word 文档中获取字数统计

    我正在尝试从上传的 Word 文档中获取字数统计 doc docx rtf 但它总是带有烦人的Word格式 有人以前解决过这个问题并且知道如何解决吗 谢谢 您将需要 区分文件类型 file name FILES image name fil
  • 如何在反应草稿所见即所得中设置初始编辑器状态

    在将数据从react draft wysiwyg文本编辑器存储到服务器端时 我使用此函数将其转换为JSON content JSON stringify convertToRaw state editorState getCurrentCo
  • Angularfire 6为所有函数设置默认云函数区域(位置)

    How to 为 Firebase 云函数全局设置默认区域通过有角度的火 使它们deployed到指定区域 或者它不必是有角度的火 我只是不想打电话 region 方法与每个函数声明 我在文档中找不到有关如何执行此操作的任何内容 但我听说这
  • 使用 Javascript 操作 FontAwesome

    我正在做一个小项目来学习更多关于 Javascript 的知识 这样我将来就可以研究 svg 动画了 现在我正在开发一个按钮 当你点击它时 它会改变他的输入 circle document getElementById circle rem
  • ggplot2 可视化绘制在彼此之上的点的计数:stat_bin2d 或 geom_tile 或点大小?

    我的问题很简单 我有一些带有 x y 坐标的点 它们位于由 1x1 正方形组成的矩形网格内 这些点具有平均坐标 因此多个点被赋予相同的坐标 它们完全重叠 可重现的例子 generate fake data y lt seq from 0 5
  • 如何使用 selenium 选择搜索建议?该网站阻止我点击提交,需要进行选择

    我试图让自己更轻松地搜索临时公寓 但包含这些公寓列表的网站要求我从下拉列表中选择一个建议 然后才能单击 提交 无论搜索框中的条目有多完整 这里的最终希望是我可以转到搜索结果 然后从每个列表中提取联系信息 我能够使用 Beautiful so
  • 如何在vanilla javascript中动态添加选项到现有选择

    我想使用纯 JavaScript 动态添加选项 我能找到的所有内容都涉及 JQuery 或尝试动态创建选择 我能找到的最接近的东西是使用 Javascript 中的选项动态添加输入类型选择它执行后者 并且是我发现的唯一不涉及 JQuery
  • Django Haystack:搜索带或不带重音符号的术语

    我正在使用 django haystack 在我的 django 项目上实现一个搜索系统 问题是我的模型中的某些字段有一些法语口音 我想找到包含带或不带口音的查询内容的条目 我认为最好的想法是创建一个 SearchIndex 其中包含带重音
  • Java Arrays.hashcode() 的 hashcode 实现是否均匀分布

    我查看了源代码Arrays hashCode char c 我不太确定它所应用的算法在所有情况下都能很好地工作 public static int hashCode int a if a null return 0 int result 1
  • 程序忽略 if 语句,并在 False 时打印 True

    我正在为家庭作业问题编写一个简单的程序 它似乎跳过了我的 if 语句 我看了其他提出的问题 那里的问题似乎不是我的问题 所以我希望你能帮忙 def isWordGuessed secretWord lettersGuessed if let
  • 在模态窗口中打开 Highcharts

    我正在一个网站上工作 我在该网站上大量使用 Highcharts 来以图表形式呈现数据 我希望用户能够将每个图表 缩放 到模式窗口中 以获得更好的可读性 我知道如何使用 API 来操作图表 但我不太确定如何克隆图表并使用变量引用新图表 我已
  • 两个日期之间的月份

    是否可以得到month names两个日期之间SQl ie 2011 05 01 And 2011 08 01是输入 我只想输出为 Month May June July August 如果有人知道该查询 请分享 DECLARE Start
  • signature.verify() 总是返回 False

    public static void main String args try String mod q0AwozeUj0VVkoksDQSCTj3QEgODomq4sAr02xMyIrWldZrNHhWfZAIcWt2MuAY3X6S3Z
  • 未声明“TestString”。由于其保护级别,它可能无法访问。 (BC30451)[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 我正在尝试使用一些即时代码编译VBCodeProvid
  • 对 geom_line 和 x 轴之间的区域进行着色

    我有两张图显示供给和需求 在一张图中我从供给中减去了需求以显示由此产生的不对称性 我想对 x 轴和不对称负值部分之间的区域进行阴影处理 以显示缺陷的程度 我目前使用以下代码 plot asymmetry lt ggplot data df
  • 如何获取高DPI系统下的真实屏幕分辨率?

    因此 Delphi 程序不支持 DPI 直到最近我需要真实的屏幕分辨率时 这才让我感到困扰 当 更容易阅读屏幕上的内容 为 150 时 Screen Width 报告错误的分辨率 在具有高 DPI 的计算机中 一些建议是使应用程序具有高 D
  • 为什么在检查 textView 文本是否以预期字符串结尾(省略时)时 android espresso 测试失败

    我有一个 android 测试 检查应用 android ellipsize end 时外部文本消息是否被截断并以三个点结尾 我不知道为什么测试失败 尽管活动中呈现的文本格式正确 Test fun when errorMessage is
  • 为什么 Java 中有数组和数组

    我遇到过这两个文档 该类的 Java 文档Array 该类的 Java 文档Arrays 我想知道这两个类之间有什么区别 它们都提供了一组不同的静态方法 但为什么它们是分开的呢 更深层次的区别是什么 它们之间的关系与普通数组实例之间的关系是
  • stage 关键字是否在 YAML 文件中的 Azure DevOps 中定义构建或部署管道

    我想知道我们是否考虑这个 YAML 代码块 如果它已经被视为构建和发布管道 或者我们需要定义阶段来表征它 下面的代码可以工作 但运行时看不到各个阶段 然而 在这种情况下 它会构建并部署到 Azure 所以这就是我问的原因 我正在寻找正确的术
  • 限制线程数

    我有一个包含我要下载的项目的列表 我使用 for 循环来迭代列表 对于此列表中的每个项目 我启动一个引用该项目的新线程 我的问题是我想同时限制 maxDownload for int i downloadList Count 1 i gt