2013-01-24 21 views
1

我的應用程序是.NET 4.5,我有一個事件處理程序,記錄所有未觀察到的任務異常錯誤。觀察到的任務異常調用TaskScheduler.UnobservedTaskException

TaskScheduler.UnobservedTaskException += (sender, e) => e.Exception.Handle(ex => 
{ 
    logger.Error(e.Exception); 
    return false; 
}); 

我返回false,什麼關閉應用程序。模擬.NET 4.0行爲。

我的問題是,爲什麼此代碼調用該事件,並因此導致我的應用程序崩潰,如果我觀察結果?

try 
{ 
    var resultado = httpClient.GetAsync('http://.....').Result; 
} 
catch (Exception ex) 
{ 
    logger.Error(ex); 
} 

UPDATE:一些調試後,我弄清楚,我有另外的任務時,我didn't叫。結果,並導致該問題。

+1

您正在閱讀的活動有誤。這並不意味着「一個未被發現的任務的例外」,而是「未被發現的任務的例外」。 –

+0

我編輯了我的問題。我實際上是「獲取」例外,登錄。當我調用Result時,它應該同步拋出一個異常 –

+0

我冒昧地設置了一個更精確的標題。希望你不介意。 – usr

回答

0

經過一番調試之後,我發現當我沒有打電話時,我有另一個任務。結果導致了問題。

1

你應該設置UnobservedTaskExceptionEventArgs.Observed爲true。在這一點上觀察結果沒有任何效果,儘管人們可以合理地相信它的確如此。