c# - 如何 : Parallel. Foreach 执行多个进程,每个进程运行一个新进程(但一次一个)?

标签 c# task-parallel-library .net-4.5 parallel.foreach

<分区>

我相信有人知道这一点,我将非常感谢您的回答。我不太了解委托(delegate)和异步等 - 所以请给我一个我如何实现的一般示例。

我有一个工作流程 我可以使用 Parallel.Foreach 同时为许多不同的文件执行一个方法(太棒了,磨那个处理器)- 然而,在该方法结束后,我需要运行另一种方法(它会生成关于前一个过程的报告), 并且第二种方法不能并行运行。

我不想等待 Parallel.ForEach 中的所有文件完成后再生成报告(这不是必需的)。但是,如果我在第一个方法结束时启动报告生成方法,那么我就会遇到问题。有什么队列之类的吗?一定有一些漂亮的方法,对吧?

谢谢

最佳答案

我认为 Jim G 的意思是:

var lockObj = new object();

Parallel.Foreach(files, file => 
{
    // Processing file
    lock(lockObj)
    {
        // Generate report.
    }
});

关于c# - 如何 : Parallel. Foreach 执行多个进程,每个进程运行一个新进程(但一次一个)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12323940/

相关文章:

c# - IndexOutOfRange 显然不是

c# - 如何将 Window 作为参数传递给 WPF C# 中的另一个类

c# - Parallel.ForEach 和异步等待

asp.net-mvc - 程序 '[4432] iisexpress.exe' 已退出,代码为 -2147023895 (0x800703e9)

c# - 如何发送 HTTP 请求而不处理响应

c# - 重复单步调试≠运行调试

c# - 奇怪的表现行为

c# - 为什么 Task.IsCanceled 不正确?

c# - 如何从外部 try/catch 传递值到 catch block (不使用全局变量)

C# 多线程与 SQL Server 数据库调用