![]() |
安静的手套 · C#编程之HttpWebRequest请求时 ...· 1 周前 · |
![]() |
听话的板栗 · CS8370:功能“顶级语句”在 C# ...· 昨天 · |
![]() |
耍酷的移动电源 · C# SocketException: ...· 20 小时前 · |
![]() |
威武的猴子 · 2023年12月编程语言排行榜_编程语言排行 ...· 18 小时前 · |
![]() |
好帅的大熊猫 · 新闻与活动-Centre of ...· 3 月前 · |
![]() |
刀枪不入的匕首 · 关于上海市2023年国民经济和社会发展计划执 ...· 5 月前 · |
![]() |
独立的柚子 · 一段风雨墙,从古看到今-中国社会科学网· 7 月前 · |
![]() |
气势凌人的太阳 · 云南多位党员干部诱骗他人参加传销被通报_手机新浪网· 7 月前 · |
![]() |
追风的菠萝 · 琉璃-第1集-免費戲劇線上看|ofiii 歐飛· 8 月前 · |
![]() |
乖乖的红薯
5 月前 |
在C#中,取消Parallel.ForEach中的单个任务或特定任务可以使用CancellationTokenSource和CancellationToken来实现。CancellationTokenSource是一个用于生成CancellationToken的工厂类,而CancellationToken则是一个用于取消操作的标记。
以下是一个示例代码,演示如何取消Parallel.ForEach中的单个任务或特定任务:
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产品介绍 。
![]() |
威武的猴子 · 2023年12月编程语言排行榜_编程语言排行榜2023年12月 18 小时前 |
![]() |
独立的柚子 · 一段风雨墙,从古看到今-中国社会科学网 7 月前 |
![]() |
气势凌人的太阳 · 云南多位党员干部诱骗他人参加传销被通报_手机新浪网 7 月前 |
![]() |
追风的菠萝 · 琉璃-第1集-免費戲劇線上看|ofiii 歐飛 8 月前 |