C#多线程开发当有多个线程运行时,如何取消指定线程
作者:野牛程序员:2023-12-28 19:57:37C#阅读 2995
取消指定线程通常涉及到线程的管理和协调。在C#中,可以使用CancellationToken和Thread类来实现取消操作。以下是一个简单的示例,演示如何使用CancellationToken取消指定线程:
using System;
using System.Threading;
class Program
{
static void Main()
{
// 创建Cancellation Token
CancellationTokenSource cts = new CancellationTokenSource();
// 启动线程
Thread thread = new Thread(() => DoWork(cts.Token));
thread.Start();
// 模拟一定时间后取消线程
Thread.Sleep(2000);
cts.Cancel();
Console.WriteLine("Main thread: Cancellation requested.");
// 等待线程完成
thread.Join();
Console.WriteLine("Main thread: Thread finished.");
}
static void DoWork(CancellationToken cancellationToken)
{
try
{
while (!cancellationToken.IsCancellationRequested)
{
// 模拟工作
Console.WriteLine("Working...");
Thread.Sleep(500);
}
}
catch (OperationCanceledException)
{
// 在取消请求时捕获 OperationCanceledException
Console.WriteLine("Thread: Cancellation requested.");
}
finally
{
// 确保在线程完成时执行清理操作
Console.WriteLine("Thread: Cleanup and finishing.");
}
}
}在这个例子中,DoWork方法是在一个单独的线程中执行的,而CancellationToken用于检测是否取消了线程。Main方法创建了一个CancellationTokenSource和一个线程,并在一定时间后取消了线程。被取消的线程会抛出OperationCanceledException,在DoWork方法中我们捕获这个异常来执行清理操作。
野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892

