BackgroundWorker backgroundWorker;
backgroundWorker = new BackgroundWorker {WorkerSupportsCancellation = true};
backgroundWorker.DoWork += (s, e) =>
{
while (!backgroundWorker.CancellationPending)
{
// Do...
}
{
while (!backgroundWorker.CancellationPending)
{
// Do...
}
e.Cancel = true;
};
};
backgroundWorker.RunWorkerAsync();
// 终止线程
backgroundWorker.CancelAsync();
当执行CancelAsync()时并没有真正终止线程而是将CancellationPending标记为ture e.Cancel=true才是真正终止