我碰到这个问题,在winform里面利用backgroundworker帮我读数据,但是,当我关闭窗口时,这个线程还继续执行(还处于dowork事件时关闭窗口),我在Formclosing时间里面调用了CancelAsync()方法还是停止不了该线程,backgroundworker的cancel还是false,查了msdn,原文如下
请注意,DoWork 事件处理程序中的代码有可能在发出取消请求时完成其工作,轮询循环可能会错过设置为 true 的 CancellationPending。在这种情况下,即使发出了取消请求,RunWorkerCompleted 事件处理程序中 System.ComponentModel.RunWorkerCompletedEventArgs 的 Cancelled 标志也不会设置为 true。这种情况被称作争用状态,它是多线程编程中的常见问题。有关多线程设计问题的更多信息,请参见 托管线程处理的最佳做法。能否举个例子在解决backgroundworker的争用啊~