this.backgroundWorker1.CancelAsync()没效果。不知道为啥,运行了上面的了。backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
一直还在运行

解决方案 »

  1.   

    调用this.backgroundWorker1.CancelAsync()并不能结束后台线程,
    要想提前结束这个线程,需要在你的DoWork事件事件处理函数中进行处理,示例代码如下:
    private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) 
            { 
                for (int i = 0; i < 10; i++ ) 
                { 
                    if ((BackgroundWorker)sender.CancellationPending) 
                    { 
                        e.Cancel = true;                    
                        break; 
                    } 
                    //dosomething.....
                } 
            }private void worker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
            {
                if (e.Cancelled)
                {
                    //Cancelled 
                }
                else
                {
                    //Succeed
                }        }
      

  2.   

    如果你想结束的话要在DoWork事件里面写的
      

  3.   

    看看这个吧:
    http://www.cnblogs.com/lexus/archive/2008/08/27/1277956.html