c# Backgroundworker种族-任何替代
本文关键字:任何替 种族 Backgroundworker | 更新日期: 2023-09-27 18:05:56
我对backgroundWorker类有一些问题。我希望我能在一个函数内取消Backgroundworker,就在它开始Backgroundworker从头开始工作之后。它引起种族歧视,我不知道如何改变它。在。net 3.5中有什么可以替代Backgroundworker的吗
编辑:
My code:
BackgroundWorker worker = new BackgroundWorker();
public void Func()
{
if(worker.IsBusy)
{
worker.CancelAsync();
worker = new BackgroundWorker();
}
View.Clear();
worker.WorkerSupportsCancellation = true;
worker.DoWork += delegate(object s, DoWorkEventArgs args)
{
BackgroundWorker sender = s as BackgroundWorker;
if(sender.CancellationPending)
{
args.Cancel = true;
return;
}
View.Generate(Filter);
};
worker.RunWorkerCompleted += delegate(object s, RunWorkerCompletedEventArgs args)
{
if(args.Error != null)
{
MessageBox.Show(args.Error.Message);
return;
}
BackgroundWorker sender = s as BackgroundWorker;
if(args.Cancelled )
{
View.Clear();
}
};
worker.RunWorkerAsync();
}
问题是:cancelAsync根本不关闭worker,我的视图以不正确的方式生成
您可以使用CancelAsync()并将WorkerSupportsCancellation设置为true,并实现一个循环来获取CancellationPending
while(x.CancellationPending) { /*TODO*/ }