c# 定時(shí)任務(wù)中斷如何處理

c#
小樊
107
2024-07-14 05:53:22

在C#中處理定時(shí)任務(wù)中斷的一種常見方法是使用CancellationTokens。CancellationTokens允許您在需要時(shí)請(qǐng)求任務(wù)的中斷,并在任務(wù)中斷時(shí)執(zhí)行相應(yīng)的處理邏輯。

以下是一個(gè)簡(jiǎn)單的示例,演示了如何在C#中使用CancellationTokens處理定時(shí)任務(wù)中斷:

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

class Program
{
    static async Task Main()
    {
        CancellationTokenSource cancellationTokenSource = new CancellationTokenSource();
        CancellationToken cancellationToken = cancellationTokenSource.Token;

        Task task = Task.Run(async () =>
        {
            while (!cancellationToken.IsCancellationRequested)
            {
                Console.WriteLine("Executing task...");
                await Task.Delay(1000);
            }
            Console.WriteLine("Task cancelled.");
        }, cancellationToken);

        // 模擬在5秒后取消任務(wù)
        await Task.Delay(5000);
        cancellationTokenSource.Cancel();

        Console.ReadLine();
    }
}

在上面的示例中,我們首先創(chuàng)建了一個(gè)CancellationTokenSource和一個(gè)CancellationToken。然后,我們?cè)谝粋€(gè)Task中執(zhí)行一個(gè)定時(shí)任務(wù),該任務(wù)每秒輸出一次"Executing task…"。在5秒后,我們調(diào)用cancellationTokenSource.Cancel()方法取消任務(wù)。

在任務(wù)中,我們?cè)诿看窝h(huán)中檢查cancellationToken.IsCancellationRequested屬性,如果它為true,就表示任務(wù)已被取消,我們就可以執(zhí)行相應(yīng)的處理邏輯,比如輸出"Task cancelled."。

這樣,我們就能夠很方便地處理定時(shí)任務(wù)中斷的情況。

0