2011-08-18 3 views
1

내 주 스레드에서 Backgroundworker를 실행합니다. 그의 할일 작업은 메인 스레드에서 "메소드"를 호출하는 메소드입니다. backgroundworker를 취소하고 싶으면 실행을 멈추지 만 mainthread에서 호출 된 "메소드"는 여전히 문제를 일으키는 원인을 실행합니다. 어떤 아이디어로 그것을 해결할 수 있을까요? 당신이 Method 내부 CancellationPending를 확인해야한다C# threads 및 backgroundworker 문제

+10

보유하고있는 문제를 설명하는 코드를 게시하십시오. –

+1

샘플 코드 또는 확장 된 설명을 제공해주십시오. –

+0

몇 가지 코드를 보여줄 수 있습니까? – Zenwalker

답변

1

CancellationPending 검사 외에, 당신은 DoWorkEventArgs 인수에 Cancel 속성을 설정할 필요가 없다.

는 다음, RunWorkerCompleted 경우에, 당신은 당신이 DoWorkEventArgs에서 설정 한 값을 반영합니다 RunWorkerCompletedEventArgsCancelled 속성을 조회 할 수 있습니다.

이제 외부에서 작업을 취소 할 때마다 BackgroundWorker이 이러한 속성을 단독으로 설정하지 않는 이유를 묻습니다. 그 이유는 DoWorkEventArgs가 취소되었는지 실제로 확인했는지 알 수 없기 때문입니다. DoWorkEventArgs이 누락되어 성공적으로 완료되었을 수 있습니다. 이는 데이터베이스 업데이트와 같은 부작용을 일으킬 수 있고 실제로 완료되었는지 여부를 알아야 할 수도 있기 때문에 중요합니다.

0

MSDN 노트 (할 당신이 그렇게?)