Как восстановиться после исключения Silverlight UnhandledException - PullRequest
1 голос
/ 21 июля 2011

В код инициализации App () я включаю универсальный обработчик

UnhandledException += Application_UnhandledException;

private void Application_UnhandledException(object sender, ApplicationUnhandledExceptionEventArgs e)
{
Debugger.Break();
}

У меня есть 2 экрана, которые работают нормально, но при быстрой навигации назад и вперед между двумя экранами несколько раз (варьируетсямежду 7 и 12) Я достигаю этой точки останова за исключением

{System.Windows.ApplicationUnhandledExceptionEventArgs}   base {System.EventArgs}:   {System.Windows.ApplicationUnhandledExceptionEventArgs}  
    ExceptionObject: {System.ArgumentException: Value does not fall within the expected range.}  
    Handled: false  

, и если я удаляю исключение UnhandledException и устанавливаю Отладчик на прерывание необработанным, я получаю следующее:

Unhandled Error in Silverlight Application  
Code: 4004  
Category: ManagedRuntimeError  
Message: System.Windows.Markup.XamlParseException: 2028 An error has occurred. [Line: 0 Position: 0] ---> System.ArgumentException: [Arg_ArgumentException]  
Arguments:  Debugging resource strings are unavailable.  
Often the key and arguments provide sufficient information to diagnose the problem.  
See http://go.microsoft.com/fwlink/?linkid=106663&Version=4.0.60531.0&File=mscorlib.dll&Key=Arg_ArgumentException  
at MS.Internal.XcpImports.CheckHResult(UInt32 hr)  
at MS.Internal.XcpImports.Collection_AddValue[T](PresentationFrameworkCollection`1 collection  

даже если я установлю e.handled = true, мое приложение вылетает.

Важное примечание:
Приложение в среде MVVM работает в течение 99,9% времени, перемещаясь между десятками экранов,Только один пользователь сообщил о возможности сбоя приложения путем быстрой навигации между двумя экранами, и только после примерно 10 попыток туда-сюда

Мои вопросы:

Любой способ определить, что являетсяВызывая это?

Есть ли способ предотвратить это?

Как лучше всего исправить эту ошибку?

1 Ответ

6 голосов
/ 11 августа 2011

Продолжение:

Проблема была решена путем присвоения имени элементу управления представлением, даже если в этом нет необходимости

из

<telnav:RadTabItem.Content>
 <views:Detail_InfoView />
</telnav:RadTabItem.Content>

до

<telnav:RadTabItem.Content>
 <views:Detail_InfoView x:Name="DetailsInnerView"/>
</telnav:RadTabItem.Content>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...