2010-04-09 3 views
2
  • 내 주 응용 프로그램이 새 BackgroundWorker를 만듭니다. X
  • X의 DoWork 이벤트 처리기가 내 컨트롤러의 Y 메서드를 호출합니다. 이 메서드는 AsyncCallback을 사용하여 WebRequest (async.) 인스턴스와 콜백을 만듭니다.
  • 응답이 도착하면 콜백 메소드 Z가 호출되고 내용이 분석됩니다. 응답에 원치 않는 콘텐츠가있을 수 있습니다. 그 순간 콜백 Z는 예외를 throw합니다.

주 응용 프로그램에서이 예외를 catch하고 싶습니다. DoWork 및 RunWorkerCompleted에서 시도했지만 거기에서 아무 것도 잡힐 수 없습니다.비동기를 호출하는 BackgroundWorker에서 예외를 throw합니다. 메서드 (Webrequest)

RunWorkerCompletedEventArgs의 오류는 항상 null입니다.

+0

그래서 해결책은 무엇인가에 전파되는 것을 방지하는 것을 의미? –

답변

2

잘못하고있는 것을 모릅니다. 그러나 이것은 매력처럼 작동합니다.

 BackgroundWorker bw = new BackgroundWorker(); 
     bw.DoWork += (o, s) => { throw new Exception("myMessage"); }; 
     bw.RunWorkerCompleted += (o, s) => { Console.WriteLine(s.Error.Message); }; 
     bw.RunWorkerAsync(); 
     Console.ReadKey(true); 

그래서이 어딘가에 예외가 잡힐되어야하며, 따라서 BWWorkCompletedEventArgs

+0

내 예외는 비동기 적으로 호출되는 메서드 (이벤트 처리기)에서 throw됩니다. 어쩌면 이것이 이유일까요?!?!? – mrbamboo

관련 문제