BackgroundWorker.CancelAsync 메서드


보류 중인 백그라운드 작업의 취소를 요청 합니다.Requests cancellation of a pending background operation.

 void CancelAsync();
public void CancelAsync ();
member this.CancelAsync : unit -> unit
Public Sub CancelAsync ()



다음 코드 예제에서는 CancelAsync 메서드를 사용 하 여 비동기 ("백그라운드") 작업을 취소 하는 방법을 보여 줍니다.The following code example demonstrates the use of the CancelAsync method to cancel an asynchronous ("background") operation. 이 코드 예제는에 대해 제공 된 큰 예제의 일부는 BackgroundWorker 클래스입니다.This code example is part of a larger example provided for the BackgroundWorker class.

void cancelAsyncButton_Click( System::Object^ /*sender*/, System::EventArgs^ /*e*/ )
   // Cancel the asynchronous operation.
   // Disable the Cancel button.
   cancelAsyncButton->Enabled = false;
private void cancelAsyncButton_Click(System.Object sender, 
    System.EventArgs e)
    // Cancel the asynchronous operation.

    // 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.

    ' Disable the Cancel button.
    cancelAsyncButton.Enabled = False
End Sub


CancelAsync는 보류 중인 백그라운드 작업을 종료 하는 요청을 제출 하 고 CancellationPending 속성을 true로 설정 합니다.CancelAsync submits a request to terminate the pending background operation and sets the CancellationPending property to true.

CancelAsync를 호출 하는 경우 작업자 메서드는 실행을 중지 하 고 종료할 수 있습니다.When you call CancelAsync, your worker method has an opportunity to stop its execution and exit. 작업자 코드는 CancellationPending 속성을 주기적으로 확인 하 여 true로 설정 되었는지 확인 해야 합니다.The worker code should periodically check the CancellationPending property to see if it has been set to true.


DoWork 이벤트 처리기의 코드는 취소 요청이 수행 되는 동안 작업을 완료할 수 있으며, 폴링 루프가 true으로 설정 CancellationPending 누락 될 수 있습니다.Be aware that your code in the DoWork event handler may finish its work as a cancellation request is being made, and your polling loop may miss CancellationPending being set to true. 이 경우 RunWorkerCompleted 이벤트 처리기에서 System.ComponentModel.RunWorkerCompletedEventArgsCancelled 플래그는 취소 요청이 발생 한 경우에도 true로 설정 되지 않습니다.In this case, the Cancelled flag of System.ComponentModel.RunWorkerCompletedEventArgs in your RunWorkerCompleted event handler will not be set to true, even though a cancellation request was made. 이러한 상황을 경합 상태 라고 하며 다중 스레드 프로그래밍에서 일반적인 문제입니다.This situation is called a race condition and is a common concern in multithreaded programming. 다중 스레딩 디자인 문제에 대 한 자세한 내용은 관리 되는 스레딩 모범 사례를 참조 하세요.For more information about multithreading design issues, see Managed Threading Best Practices.

적용 대상

추가 정보