C# 使用CancellationTokenSource取消多线程
作者:野牛程序员:2023-12-28 19:56:11C#阅读 2458
使用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