C#多线程开发当有多个线程运行时,如何取消指定线程
作者:野牛程序员:2023-12-28 19:57:37C#阅读 2466
取消指定线程通常涉及到线程的管理和协调。在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