2011-01-27 3 views
0

작업자 스레드가WPF는 작업자 스레드에서 예외를 throw하지만 계속됩니다.

처럼 보이는 작업을 수행하는 시나리오가 있습니다.
try 
{  
    for() 
    { 
     functionA(); 
     functionB(); 
    } 
} 
catch(Exception ex) 
{ 
    throw new Exception("Message");  
} 

기본적으로 예외를 다시 throw하므로 작업자가 완료되면 UI 스레드가 예외를 수신합니다. 이제 functionA에서 예외가 발생하면 예외를 던지기를 원하지만 루프를 계속하고 멈추지는 않습니다. 이것을 어떻게 할 수 있습니까?

편집 : 명확하지 않은 경우 예외가 발생했지만 작업자를 중지시키지 않은 UI를 UI에 알릴 수 있습니다.

답변

1

뭔가를 중지 할 수 있도록,이입니다 다른 예외 목록을 포함하는 사용자 정의 예외.

+0

그러나 'functionB'는 중요합니다. 'functionB'가 예외를 throw하면 종료해야합니다. 또한 UI에 functionA에서 오류가 발생했음을 즉시 통보 받아야합니다. 모두 종료하지 않고 – Aks

+0

이 경우 목록에 예외를 추가하는 대신 dispatcher를 사용하여 UI 스레드에서 예외를 다시 throw하면됩니다. Application .Current.Dispatcher.BeginInvoke (새 작업 (() => MyAsyncException (e)) throw). –

+0

작업자 스레드가 다른 프로젝트에서 작동 중입니다. Application.Current.Dispatcher는 컨텍스트 내에서 의미가 없습니다. ( – Aks

관련 문제