c# - 如何停止 Parallel.ForEach 循环?

标签 c#

我有这段代码来启动一个 Parallel ForEach 循环:

Parallel.ForEach<ListViewItem>(filesListView.Items.Cast<ListViewItem>(), new ParallelOptions() { MaxDegreeOfParallelism = Environment.ProcessorCount }, item => {
    if (CallToStop == true)
        {  
            //Code here to stop the loop!
        }        
    internalProcessStart(item);
});

我有一些代码会检查是否有停止线程的调用,然后我想中断;代码,但这不适用于并行。

我找到了相同的 question by someone else ,但他们的代码与我的略有不同,我不确定将 ParallelLoopState state 放在哪里。

谢谢!

最佳答案

改写如下

Parallel.ForEach<ListViewItem>(filesListView.Items.Cast<ListViewItem>(), 
            new ParallelOptions() { MaxDegreeOfParallelism = Environment.ProcessorCount }, 
           (item, state) => {
    if (CallToStop == true)
        {  
            state.Break();
        }        
    internalProcessStart(item);
});

希望这对您有所帮助。

关于c# - 如何停止 Parallel.ForEach 循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39777560/

相关文章:

c# - 将 float 转换为 int 以进行算术运算的最佳方法?

c# - 常量与。方法参数枚举

C# WPF 应用程序启动非常慢

c# - 在 C# 中格式化日期时间

c# - 这个参数类型约束是什么意思?

c# - 使用 Linq 在两个日期之间重叠记录

c# - 使用计数 c# 按列表排序

c# - 32x32 矩阵的 BinDCT 实现

c# - 执行后如何保持控制台窗口打开?

c# - 即使未能构造对象,也会调用本地事件监听器