当前位置: 首页 > 知识库问答 >
问题:

使用并行foreach循环传递对象

夏振国
2023-03-14

我需要修改下面的代码,以使用parallel.foreach循环与常规foreach循环。

我遇到的问题是将对象传递给foreach循环。我刚开始使用parallel.foreach循环-有没有人对此有一些信息?

当前代码

var objSellerPeramaterValuesList = objInboundDB.GetMwsRequestParameters();

foreach (SellerModel objSellerPeramaterValues in objSellerPeramaterValuesList)
{
    Method.InsertProcessLog(new ProcessLogModel
                                {
                                    sProcessName = sProcessName,
                                    sSellerID = objSellerPeramaterValues.sSellerId,
                                    sStartDate = sProcessStartDate,
                                    sEndDate = sProcessEndDate,
                                    sStatus = "STARTED",
                                    sMessage = "Started Process For ID .. " + objSellerPeramaterValues.sSellerId
                                });

    // more code here......
}

问题是列表将包含3000+项,循环将循环每一项,我需要并行地运行它们。

因此,我想使用parallel.foreach函数,但我无法通过传递对象来使其工作。

共有1个答案

方梓
2023-03-14

看起来您应该能够做到:

Parallel.ForEach(objSellerPeramaterValuesList, objSellerPeramaterValues =>
{
    /* exact same code */
    // Method.InsertProcessLog(...) // etc
});

但是,您必须非常注意排序和并发性--如果您正在做的任何事情(包括您正在使用的组件/工具)不是/不是被设计成线程安全的:这是坏事。

 类似资料:
  • 本文向大家介绍如何在PowerShell foreach并行循环中使用PSCustomObject?,包括了如何在PowerShell foreach并行循环中使用PSCustomObject?的使用技巧和注意事项,需要的朋友参考一下 要在Foreach并行循环内使用PSCustomObject ,我们首先需要考虑如何在循环内使用变量。 因此,让我们看看是否可以在$out变量中存储或更改值。 示例

  • foreach循环遍历列表值并将控制变量(var)依次设置为列表的每个元素 - 语法 (Syntax) Perl编程语言中foreach循环的语法是 - foreach var (list) { ... } 流程图 (Flow Diagram) 例子 (Example) #!/usr/local/bin/perl @list = (2, 20, 30, 40, 50); # foreach lo

  • 问题内容: 使用以下代码显示我的Twitter个人资料中的朋友列表。我想一次只加载一个特定的数字,例如20,然后在底部为第1-2-3-4-5页的页面提供分页链接(但是,除以限制) **更新**** 这项工作有效,只需要抵消从开始的输出即可。在想什么? 问题答案: 一个非常优雅的解决方案是使用:

  • 我写了一些代码,通过iText7将tiff文件转换成pdf文件。但是当我启动它时,它在方法上有死锁。如果将parallel.foreach替换为foreach则所有工作都正确。我做错了什么? UPD在类的方法中找到了IText7源代码中发生死锁的地方。这里有这部分代码:

  • 除了前面介绍的几种循环语句外,C# 同样也支持 foreach 循环,使用 foreach 可以遍历数组或者集合对象中的每一个元素,其语法格式如下: foreach(数据类型 变量名 in 数组或集合对象){     语句块; } foreach 会在每次循环的过程中,依次从数组或集合对象中取出一个新的元素放到 里定义的变量中,直到所有元素都成功取出后退出循环。 【示例】使用 foreach 循环

  • 本文向大家介绍C# Foreach循环,包括了C# Foreach循环的使用技巧和注意事项,需要的朋友参考一下 示例 foreach将迭代实现的类的任何对象IEnumerable(请注意IEnumerable<T>从其继承的对象)。此类对象包括一些内置对象,但不限于:List<T>,T[](任何类型的数组),Dictionary<TKey, TSource>以及诸如IQueryable和IColl