是的,C#中的BackgroundWorker
類提供了取消正在執行的任務的功能。你可以使用CancelAsync
方法來取消任務。以下是一個簡單的示例:
using System;
using System.ComponentModel;
using System.Threading;
namespace BackgroundWorkerExample
{
class Program
{
static void Main(string[] args)
{
BackgroundWorker worker = new BackgroundWorker();
worker.WorkerReportsProgress = true;
worker.WorkerSupportsCancellation = true;
worker.DoWork += (sender, e) =>
{
for (int i = 0; i < 10; i++)
{
if (worker.CancellationPending)
{
e.Cancel = true;
Console.WriteLine("任務已取消");
return;
}
Console.WriteLine($"正在處理: {i}");
Thread.Sleep(1000);
}
};
worker.ProgressChanged += (sender, e) =>
{
Console.WriteLine($"進度: {e.ProgressPercentage}%");
};
worker.RunWorkerAsync();
Console.WriteLine("按任意鍵取消任務...");
Console.ReadKey();
worker.CancelAsync();
}
}
}
在這個示例中,我們創建了一個BackgroundWorker
實例,并設置了WorkerSupportsCancellation
屬性為true
。在DoWork
事件處理程序中,我們檢查CancellationPending
屬性,如果為true
,則設置e.Cancel
為true
并退出循環。在主線程中,我們等待用戶按下任意鍵,然后調用CancelAsync
方法來取消任務。