一些挖掘到的異常處理在Silverlight和閱讀一些有益的博客這樣 Silverlight exception handling using WCF RIA Services and WCF Services我最終實現在App.xaml.cs類似的想法,以顯示錯誤頁面後並調用另一個WCF服務方法的錯誤記錄到事件查看器:如何停止正在運行的WCF服務在Silverlight中,當發生異常
private void Application_UnhandledException(object sender, ApplicationUnhandledExceptionEventArgs e)
{
if (!System.Diagnostics.Debugger.IsAttached)
{
var errorPage = new Error();
errorPage.Show();
string errorMsg = string.Format("{0} {1}", e.ExceptionObject.Message, e.ExceptionObject.StackTrace);
EventHandler<WriteIntoEventLogCompletedEventArgs> callback = (s, ev) =>
{
bool result = ev.Result;
};
(new ServiceProxy<ApplicationServiceClient>()).CallService<WriteIntoEventLogCompletedEventArgs>(callback, errorMsg);
e.Handled = true;
}
}
,這就是我在Error.xaml.cs:
private void OKButton_Click(object sender, RoutedEventArgs e)
{
this.DialogResult = true;
}
,基本上將關閉時的錯誤頁面用戶點擊確定。
一切工作正常大多數情況下。當wcf服務的回調之一導致異常時,問題發生。錯誤頁面將很好地顯示,當用戶單擊確定,錯誤頁面將被關閉。但是背景仍然顯示忙指標,原始服務回調仍在等待響應。我需要以某種方式終止它。
如果有人能幫上忙,我會很感激。
感謝, 實
-
非常感謝您有所幫助reply.I使用同樣的想法,並在原有的服務回調方法添加代碼,以檢查e.Error如果是不是null,關閉窗口(這是一個子窗口)與busyindicator,現在一切正常。再次感謝。 Sil