После некоторого изучения обработки исключений в silverlight и чтения некоторых полезных блогов, подобных этому Обработка исключений Silverlight с использованием служб WCF RIA и служб WCF В итоге я реализовал аналогичную идею в файле App.xaml.cs, чтобы показатьстраницу ошибки и вызовите другой метод службы wcf, чтобы записать ошибку в программу просмотра событий:
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;
}
, что в основномзакроет страницу с ошибкой, когда пользователь нажмет OK.
В большинстве случаев все работает нормально. Проблема возникает, когда один из обратных вызовов к сервису wcf вызывает исключение. Страница ошибки будет хорошо отображаться, и когдапользователь нажимает ОК, страница ошибки закрывается.Но фон все еще показывает индикатор занятости, и исходный сервисный колбэк все еще ждет ответа. Мне нужно как-то прекратить его.
Я был бы признателен, если бы кто-нибудь мог помочь.
Спасибо, Sil
-
Большое спасибо за ваш полезный ответ. Я использовал ту же идею и в исходный метод обратного вызова службы добавил код для проверки e.Error и, если он не нулевойзакройте окно (это дочернее окно) с параметром busyindicator, и теперь все работает идеально.Еще раз спасибо.Sil