您好,欢迎来到五一七教育网。
搜索
您的当前位置:首页C#高级:利用 CancellationToken 实现方法超时控制,提升应用响应性

C#高级:利用 CancellationToken 实现方法超时控制,提升应用响应性

来源:五一七教育网

完整版: 

using System;
using System.Threading;
using System.Threading.Tasks;

public class Program
{
    public static async Task Main()
    {
        var cts = new CancellationTokenSource();

        // 设置超时时间为10秒
        cts.CancelAfter(TimeSpan.FromSeconds(3));

        try
        {
            var result = await Task.Run(() => LongRunningOperation(cts.Token), cts.Token);
            if (result == null)
            {
                Console.WriteLine("操作超时,已跳过相关代码。");
            }
            else
            {
                Console.WriteLine(result);
            }
        }
        catch (Exception ex)
        {
            // 捕获其他异常,进行处理
            Console.WriteLine($"发生异常: {ex.Message}");
        }
    }

    private static string LongRunningOperation(CancellationToken cancellationToken)
    {
        for (int i = 0; i < 20; i++)
        {
            // 模拟每秒的工作
            Thread.Sleep(1000); // 每次睡眠1秒

            // 定期检查是否请求取消
            if (cancellationToken.IsCancellationRequested)
            {
                // 返回 null 表示操作被取消
                return null;
            }
        }
        return "操作完成";
    }
}

min版: 

public class Program
{
    public static async Task Main()
    {
        var cts = new CancellationTokenSource();

        // 设置超时时间为3秒
        cts.CancelAfter(TimeSpan.FromSeconds(3));

        await Task.Run(() =>
        {
            for (int i = 0; i < 20; i++)
            {
                // 模拟每秒的工作
                Thread.Sleep(1000); // 每次睡眠1秒

                // 检查取消请求
                if (cts.Token.IsCancellationRequested)
                {
                    // 处理取消逻辑
                    Console.WriteLine("操作被取消。");
                    return; // 直接返回
                }
            }
            Console.WriteLine("操作完成");
        }, cts.Token);

    }
}

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- 517ttc.cn 版权所有 赣ICP备2024042791号-8

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务