2011-01-27 30 views
0

我有一種情況,一個工作線程執行,看起來像WPF拋出的異常從工作線程,但繼續

try 
{  
    for() 
    { 
     functionA(); 
     functionB(); 
    } 
} 
catch(Exception ex) 
{ 
    throw new Exception("Message");  
} 

我基本上重新拋出異常一個任務,以便當工人完成,UI線程將收到異常。 現在,如果在functionA發生異常,我想拋出異常,但繼續循環而不是停止。我怎樣才能做到這一點?

編輯:如果它是不明確的,這是爲了使UI可以通知已發生異常,但不能阻止工人

回答

1

事情是這樣的:

List<Exception> errorsLog = new List<Exception>(); 

for() 
{ 
    try 
    { 
     functionA(); 
    } 
    catch(Exception e) { 
     errorsLog.Add(e); 
    } 

    try 
    { 
     functionB(); 
    } 
    catch(Exception e) { 
     errorsLog.Add(e); 
    } 
} 

if (errorsLog.Count > 0) { 
    throw new AggregateException(errorsLog); 
} 

哪裏AggregateException是您的自定義異常包含其他例外列表。

+0

但是`functionB`很關鍵。如果`functionB`引發異常,我必須退出。此外,必須立即通知UI函數a中發生了錯誤,而不是在所有函數完成後發生錯誤 – Aks 2011-01-27 14:03:16