中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

c# continuewith能取消任務嗎

c#
小樊
81
2024-11-26 16:17:25
欄目: 編程語言

在C#中,ContinueWith方法用于在任務完成后執行另一個任務。然而,ContinueWith本身并不能取消前一個任務。要取消一個任務,你需要使用CancellationTokenTask.Run方法。

下面是一個示例,展示了如何使用CancellationToken取消一個任務:

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

class Program
{
    static void Main()
    {
        CancellationTokenSource cts = new CancellationTokenSource();
        CancellationToken token = cts.Token;

        Task task = Task.Run(() =>
        {
            for (int i = 0; i < 10; i++)
            {
                if (token.IsCancellationRequested)
                {
                    Console.WriteLine("任務被取消");
                    return;
                }

                Console.WriteLine("任務執行中: " + i);
                Thread.Sleep(1000);
            }
        }, token);

        // 在5秒后取消任務
        cts.CancelAfter(5000);

        try
        {
            task.Wait();
        }
        catch (AggregateException ae)
        {
            foreach (var e in ae.InnerExceptions)
            {
                if (e is OperationCanceledException)
                {
                    Console.WriteLine("任務被取消");
                }
                else
                {
                    Console.WriteLine("任務發生異常: " + e.Message);
                }
            }
        }
    }
}

在這個示例中,我們創建了一個CancellationTokenSource對象,并將其傳遞給Task.Run方法。我們還傳遞了一個CancellationToken對象,以便在需要時取消任務。然后,我們在5秒后調用cts.CancelAfter方法來取消任務。最后,我們使用try-catch塊捕獲AggregateException異常,以便在任務被取消時正確處理。

0
开封市| 唐山市| 尼勒克县| 呈贡县| 同心县| 宁国市| 吕梁市| 淮北市| 弋阳县| 婺源县| 井陉县| 榆中县| 嘉黎县| 资源县| 淮北市| 海晏县| 永城市| 黄龙县| 安化县| 涞水县| 澄迈县| 响水县| 宁强县| 巍山| 乌拉特后旗| 平阴县| 合水县| 湖南省| 浑源县| 青浦区| 兴国县| 远安县| 三原县| 昭觉县| 丁青县| 定日县| 林芝县| 辰溪县| 崇州市| 三门峡市| 南丰县|