C# 使用CancellationTokenSource取消多线程
作者:野牛程序员:2023-12-28 19:56:11C#阅读 3018
使用CancellationTokenSource 可以方便地取消多线程操作。以下是一个简单的示例,演示如何在C#中使用CancellationTokenSource取消多线程:
using System;
using System.Threading;
using System.Threading.Tasks;
class Program
{
static void Main()
{
CancellationTokenSource cancellationTokenSource = new CancellationTokenSource();
// 启动一个任务来执行工作
Task.Run(() => DoWork(cancellationTokenSource.Token));
// 模拟一些时间后取消任务
Thread.Sleep(2000);
cancellationTokenSource.Cancel();
Console.WriteLine("主线程已请求取消任务。");
Console.ReadLine();
}
static void DoWork(CancellationToken cancellationToken)
{
try
{
while (!cancellationToken.IsCancellationRequested)
{
// 模拟执行一些工作
Console.WriteLine("正在执行工作...");
Thread.Sleep(500);
}
}
catch (OperationCanceledException)
{
Console.WriteLine("任务已被取消。");
}
}
}在这个例子中,创建了一个 CancellationTokenSource 对象,并传递其 Token 属性给 DoWork 方法。DoWork 方法中使用了 while 循环来模拟一些工作,同时通过 cancellationToken.IsCancellationRequested 来检查是否已经取消任务。主线程在启动任务后等待一段时间后调用 Cancel 方法取消任务。
请注意,如果 DoWork 方法中执行的工作涉及到阻塞操作(如 I/O 操作),需要在适当的地方检查 cancellationToken.IsCancellationRequested 并手动抛出 OperationCanceledException,以确保及时取消任务。
野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892

