温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

C# Invoke方法是否支持取消操作

发布时间:2024-10-15 10:22:56 来源:亿速云 阅读:78 作者:小樊 栏目:编程语言

是的,C# 的 Invoke 方法支持取消操作。你可以使用 CancellationToken 参数来实现取消操作。CancellationToken 参数允许你在调用 Invoke 方法时传递一个取消令牌,以便在需要时取消操作。

以下是一个使用 Invoke 方法和 CancellationToken 的示例:

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

class Program
{
    static void Main()
    {
        Action action = () =>
        {
            for (int i = 0; i < 10; i++)
            {
                Console.WriteLine("Working...");
                Thread.Sleep(1000);
            }
        };

        CancellationTokenSource cts = new CancellationTokenSource();
        CancellationToken token = cts.Token;

        Task task = Task.Factory.StartNew(action, token);

        Console.WriteLine("Press 'C' to cancel the operation.");
        if (Console.ReadKey().Key == ConsoleKey.C)
        {
            cts.Cancel();
        }

        try
        {
            task.Wait();
        }
        catch (AggregateException ae)
        {
            ae.Handle(ex =>
            {
                if (ex is OperationCanceledException)
                {
                    Console.WriteLine("Operation canceled.");
                }
                else
                {
                    Console.WriteLine("An error occurred: " + ex.Message);
                }
            });
        }
    }
}

在这个示例中,我们创建了一个简单的操作,该操作会每隔一秒钟打印 “Working…”。我们使用 CancellationTokenSource 创建一个取消令牌,并将其传递给 Task.Factory.StartNew 方法。当用户按下 “C” 键时,我们调用 cts.Cancel() 方法来取消操作。在任务完成时,我们捕获 AggregateException 异常并处理它,检查是否是 OperationCanceledException 类型,以确定操作是否已被取消。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI