Приложение Silverlight OOB не перехвачено исключение при автономном запуске

У меня есть приложение Silverlight 5, которое может работать как в браузере, так и вне его. Когда браузер не работает, он должен иметь возможность использовать ранее загруженные данные (XML и JPG) для работы без подключения к Интернету.

В настоящее время он работает, но во время запуска у меня возникло необработанное исключение (которое перехватывается обработчиком события UnhandledException моего приложения), которое отображается пользователю с пугающим сообщением - что-то вроде «Внутренняя ошибка - приложение может аварийно завершить работу». с дополнительными деталями "E_UNEXPECTED". Ошибка возникает как на моем компьютере разработчика, так и на других компьютерах, в том числе на клиенте, использующем MacOS X.

Конечно, я мог бы изменить сообщение, но дело не в этом.

Итак, мой вопрос: что может вызывать ошибку только при запуске в автономном режиме, ошибка, которая при обнаружении обработчиком UnhandledException, похоже, не влияет на стабильность приложения?


person jv42    schedule 17.12.2012    source источник


Ответы (1)


Я нашел виновника (записав свои шаги при запуске): это проверка обновлений.

Если я вызываю Application.CheckAndDownloadUpdateAsync() при отсутствии доступного соединения, я получаю это исключение. Если я проверю, доступно ли соединение (*) перед запуском проверки обновлений, исключение исчезнет.

Это не задокументировано в http://msdn.microsoft.com/en-us/library/dd730310%28VS.95%29.aspx, поэтому это выглядит как ошибка в среде выполнения Silverlight.

(*) Основано в основном на NetworkInterface.GetIsNetworkAvailable(), плюс несколько пользовательских проверок.

person jv42    schedule 17.12.2012