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,我的视图以不正确的方式生成

c# Backgroundworker种族-任何替代

您可以使用CancelAsync()并将WorkerSupportsCancellation设置为true,并实现一个循环来获取CancellationPending

while(x.CancellationPending) { /*TODO*/ }