首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在c#中取消Parallel.ForEach中的单个任务或特定任务

在C#中,取消Parallel.ForEach中的单个任务或特定任务可以使用CancellationTokenSource和CancellationToken来实现。CancellationTokenSource是一个用于生成CancellationToken的工厂类,而CancellationToken则是一个用于取消操作的标记。

以下是一个示例代码,演示如何取消Parallel.ForEach中的单个任务或特定任务:

代码语言:txt
复制
using System;
using System.Collections.Concurrent;
using System.Threading;
using System.Threading.Tasks;

class Program
{
    static void Main()
    {
        // 创建一个CancellationTokenSource对象
        CancellationTokenSource cts = new CancellationTokenSource();

        // 获取CancellationToken
        CancellationToken token = cts.Token;

        // 创建一个并发队列用于存储任务结果
        ConcurrentQueue<int> results = new ConcurrentQueue<int>();

        // 启动Parallel.ForEach循环
        Parallel.ForEach(
            Enumerable.Range(1, 10),
            new ParallelOptions { CancellationToken = token },
            (i, loopState) =>
            {
                // 检查是否需要取消任务
                if (i == 5)
                {
                    // 取消特定任务
                    loopState.Stop();
                    return;
                }

                // 模拟任务执行
                Thread.Sleep(1000);

                // 将任务结果添加到并发队列中
                results.Enqueue(i);
            });

        // 输出任务结果
        foreach (int result in results)
        {
            Console.WriteLine(result);
        }

        Console.ReadLine();
    }
}

在上述示例中,我们首先创建了一个CancellationTokenSource对象,然后通过调用其Token属性获取了一个CancellationToken。接下来,我们使用Parallel.ForEach方法来执行一系列任务,通过将ParallelOptions的CancellationToken属性设置为我们获取的CancellationToken,以便在任务执行过程中检查是否需要取消任务。

在任务执行的委托中,我们首先检查当前任务的索引是否为5,如果是,则调用loopState.Stop()方法来取消特定任务。然后,我们模拟任务的执行,将任务结果添加到并发队列中。

最后,我们遍历并发队列,输出任务结果。

这里推荐腾讯云的云服务器CVM产品,它提供了高性能、可靠稳定的云服务器实例,适用于各种应用场景。您可以通过以下链接了解更多关于腾讯云服务器CVM的信息:腾讯云服务器CVM产品介绍

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

14分22秒

AI芯片技术基础【AI芯片】芯片基础06

1.4K
2分29秒

MySQL系列七之任务1【导入SQL文件,生成表格数据】

24分28秒

GitLab CI/CD系列教程(四):.gitlab-ci.yml的常用关键词介绍与使用

30秒

INSYDIUM创作的特效

7分55秒

AI芯片涉及哪些知识?【AI芯片】内容简介

1分30秒

基于强化学习协助机器人系统在多个操纵器之间负载均衡。

1分34秒

手把手教你利用Python轻松拆分Excel为多个CSV文件

1分31秒

基于GAZEBO 3D动态模拟器下的无人机强化学习

2分23秒

如何从通县进入虚拟世界

616
1分7秒

PS小白教程:如何在Photoshop中给风景照添加光线效果?

7分31秒

人工智能强化学习玩转贪吃蛇

1时5分

云拨测多方位主动式业务监控实战

领券