当前位置:首页C# > 正文

C#多线程开发当有多个线程运行时,如何取消指定线程

作者:野牛程序员:2023-12-28 19:57:37C#阅读 2466

取消指定线程通常涉及到线程的管理和协调。在C#中,可以使用CancellationTokenThread类来实现取消操作。以下是一个简单的示例,演示如何使用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
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
相关推荐

最新推荐

热门点击