2009-11-03 7 views
0

백그라운드 작업자가 backgroundWorker1.CancelAsync(); 메서드를 호출 할 수 있지만이 메서드를 호출하면 작업자 메서드에 코드를 추가하여 취소 요청을 확인해야합니다. 이 모든 것은 정중하고 훌륭하지만, 스레드를 즉시 죽이고 싶다면 어떻게해야할까요? 이것이 어떻게 이루어 졌는가?Winforms : 배경 작업자 - 그것을 죽이는 가장 좋은 방법

내가 시작 통과하지 않는 스레드를 몰살하고 싶은 200 그것은 좋은 생각처럼 보이지 않는

+0

외부에서 lovelessly 프로세스를 종료 할 수있게하려면 스레드와 Abort() - 메서드를 사용하지 않는 이유가 있습니까? – Christian

+0

예, 웹 서비스 메서드를 호출하는 코드가 있습니다.이 작업이 완료되기를 기다리는 동안 영원히 걸리므로 사용자는 뭔가 잘못되었다고 생각할 것입니다. –

답변

1

이 ...

더 나은 프로그래머 연습 CancellationPending을 확인하는 것 수집하지 않습니다 정기적으로 스레드에서.

if (backgroundWorker1.CancellationPending) 
{ 
    e.Cancel = true;  
    return; 
} 

편집 :

이 (가 나쁜 프로그래밍 연습의로) 어쨌든있는 BackgroundWorker를 지원하지 않습니다,하지만 당신이 정말로 그렇게하려면 : 단지 자신에게 Thread 클래스

를 사용하여 일반 스레드를 생성
관련 문제