BackgroundWorker.CancelAsync 方法   
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
请求取消挂起的后台操作。
public:
 void CancelAsync();public void CancelAsync ();member this.CancelAsync : unit -> unitPublic Sub CancelAsync ()例外
示例
下面的代码示例演示如何使用 CancelAsync 方法取消异步 (“background”) 操作。 此代码示例是为 BackgroundWorker 类提供的一个更大示例的一部分。
void cancelAsyncButton_Click( System::Object^ /*sender*/, System::EventArgs^ /*e*/ )
{  
   // Cancel the asynchronous operation.
   this->backgroundWorker1->CancelAsync();
   
   // Disable the Cancel button.
   cancelAsyncButton->Enabled = false;
}
private void cancelAsyncButton_Click(System.Object sender, 
    System.EventArgs e)
{   
    // Cancel the asynchronous operation.
    this.backgroundWorker1.CancelAsync();
    // Disable the Cancel button.
    cancelAsyncButton.Enabled = false;
}
Private Sub cancelAsyncButton_Click( _
ByVal sender As System.Object, _
ByVal e As System.EventArgs) _
Handles cancelAsyncButton.Click
    
    ' Cancel the asynchronous operation.
    Me.backgroundWorker1.CancelAsync()
    ' Disable the Cancel button.
    cancelAsyncButton.Enabled = False
    
End Sub
注解
              CancelAsync 提交终止挂起后台操作的请求, CancellationPending 并将 属性设置为 true。
调用 CancelAsync时,辅助角色方法有机会停止其执行并退出。 工作器代码应定期检查 属性,CancellationPending以查看它是否已设置为 true。
注意
请注意,事件处理程序中的 DoWork 代码可能会在发出取消请求时完成其工作,并且轮询循环可能会错过 CancellationPending 设置为 true。 在这种情况下,即使发出了取消请求,Cancelled事件处理程序中的 RunWorkerCompleted 标志System.ComponentModel.RunWorkerCompletedEventArgs也不会设置为 true。 这种情况称为 争用条件 ,是多线程编程中常见的问题。 有关多线程设计问题的详细信息,请参阅 托管线程处理最佳做法。