BackgroundWorker 在 C# 中可以很方便地實現多線程操作。以下是一些實現多線程的步驟:
以下是一個簡單的示例代碼:
// 實例化 BackgroundWorker 對象
BackgroundWorker worker = new BackgroundWorker();
worker.WorkerReportsProgress = true;
worker.WorkerSupportsCancellation = true;
// 添加 DoWork 事件處理程序
worker.DoWork += (sender, e) =>
{
// 后臺操作
for (int i = 0; i < 100; i++)
{
// 模擬耗時操作
System.Threading.Thread.Sleep(100);
// 報告進度
worker.ReportProgress(i);
// 檢查是否取消
if (worker.CancellationPending)
{
e.Cancel = true;
break;
}
}
};
// 添加 ProgressChanged 事件處理程序
worker.ProgressChanged += (sender, e) =>
{
// 更新 UI 界面
progressBar1.Value = e.ProgressPercentage;
};
// 添加 RunWorkerCompleted 事件處理程序
worker.RunWorkerCompleted += (sender, e) =>
{
if (e.Cancelled)
{
// 操作被取消
}
else if (e.Error != null)
{
// 發生錯誤
}
else
{
// 操作完成
}
};
// 啟動后臺操作
worker.RunWorkerAsync();
通過以上步驟,可以很方便地實現多線程操作,并在后臺執行耗時操作,同時更新 UI 界面。