문서를 영문으로 보려면 영문 확인란을 선택하세요. 마우스 포인터를 텍스트 위로 이동시켜 팝업 창에서 영문 텍스트를 표시할 수도 있습니다.
번역
영문
이 설명서는 보관되지만 유지 되지 않습니다.

BackgroundWorker.DoWork 이벤트

RunWorkerAsync 가 호출될 때 발생합니다.

네임스페이스:  System.ComponentModel
어셈블리:  System(System.dll)

public event DoWorkEventHandler DoWork

이 이벤트는 RunWorkerAsync 메서드를 호출할 때 발생합니다. 이때 수행하는 데 시간이 많이 걸릴 수 있는 작업이 시작됩니다.

DoWork 이벤트 처리기의 코드에서는 정기적으로 CancellationPending 속성 값을 확인하여 true이면 작업을 중단해야 합니다. 이때 System.ComponentModel.DoWorkEventArgsCancel 플래그를 true로 설정할 수 있으며, RunWorkerCompleted 이벤트 처리기에 있는 System.ComponentModel.RunWorkerCompletedEventArgsCancelled 플래그가 true로 설정됩니다.

주의 정보주의

DoWork 이벤트 처리기의 코드에서는 취소가 요청되면 작업을 종료할 수 있으며, 폴링 루프에서 true로 설정되는 CancellationPending을 놓칠 수 있습니다. 이 경우 취소가 요청된 경우에도 RunWorkerCompleted 이벤트 처리기에 있는 System.ComponentModel.RunWorkerCompletedEventArgsCancelled 플래그가 true로 설정되지 않습니다. 이러한 상황을 경쟁 조건이라고 하는데, 경쟁 조건은 다중 스레드 프로그래밍에서 제기되는 일반적인 문제입니다. 다중 스레드 디자인 문제에 대한 자세한 내용은 관리되는 스레딩을 구현하는 최선의 방법을 참조하십시오.

작업에서 결과를 생성하면 DoWorkEventArgs.Result 속성에 결과를 할당할 수 있습니다. 이 결과는 RunWorkerCompletedEventArgs.Result 속성의 RunWorkerCompleted 이벤트 처리기에서 사용할 수 있습니다.

작업이 코드에서 처리하지 않는 예외를 발생시키는 경우 BackgroundWorker는 예외를 catch하여 RunWorkerCompleted 이벤트 처리기에 전달합니다. 여기에서 예외는 System.ComponentModel.RunWorkerCompletedEventArgsError 속성으로 노출됩니다. Visual Studio 디버거에서 실행 중인 경우, 디버거는 DoWork 이벤트 처리기에서 처리되지 않은 예외가 발생한 지점에 도달하면 실행을 중단합니다. BackgroundWorker 가 두 개 이상 있는 경우 이 개체를 직접 참조하면 DoWork 이벤트 처리기가 BackgroundWorker의 특정 인스턴스에 연결되므로 직접 참조하지 않아야 합니다. 대신 DoWork 이벤트 처리기에서 sender 매개 변수를 캐스팅하여 BackgroundWorker에 액세스해야 합니다.

DoWork 이벤트 처리기에서 사용자 인터페이스 개체를 조작하지 않도록 주의해야 합니다. 대신 BackgroundWorker 이벤트를 통해 사용자 인터페이스와 통신합니다.

이벤트 처리에 대한 자세한 내용은 이벤트 사용을 참조하십시오.

다음 코드 예제에서는 DoWork 이벤트를 사용하여 비동기 작업을 시작하는 방법을 보여 줍니다. 이 코드 예제는 BackgroundWorker 클래스에 대해 제공되는 보다 큰 예제의 일부입니다.


// This event handler is where the actual,
// potentially time-consuming work is done.
private void backgroundWorker1_DoWork(object sender, 
    DoWorkEventArgs e)
{   
    // Get the BackgroundWorker that raised this event.
    BackgroundWorker worker = sender as BackgroundWorker;

    // Assign the result of the computation
    // to the Result property of the DoWorkEventArgs
    // object. This is will be available to the 
    // RunWorkerCompleted eventhandler.
    e.Result = ComputeFibonacci((int)e.Argument, worker, e);
}


.NET Framework

4, 3.5, 3.0, 2.0에서 지원

.NET Framework Client Profile

4, 3.5 SP1에서 지원

Windows 7, Windows Vista SP1 이상, Windows XP SP3, Windows XP SP2 x64 버전, Windows Server 2008(Server Core는 지원되지 않음), Windows Server 2008 R2(Server Core는 SP1 이상에서 지원됨), Windows Server 2003 SP2

.NET Framework에서 모든 플랫폼의 전체 버전을 지원하지는 않습니다. 지원되는 버전의 목록을 보려면 .NET Framework 시스템 요구 사항을 참조하십시오.
표시: