在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ù)中斷的情況。