2011-07-21 6 views
1

Dans mon code d'initialisation App(), j'inclure un gestionnaire génériqueComment se remettre d'une Silverlight UnhandledException

UnhandledException += Application_UnhandledException; 

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

J'ai 2 écrans qui fonctionnent bien, mais lors de la navigation de retour rapidement et vient entre les deux écrans un nombre de fois (varie entre 7 et 12) je frappe ce point d'arrêt à l'exception

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

et si je retire le UnhandledException et mis le Debugger pour briser le unhandled, je reçois les éléments suivants:

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 

même si je définis e.handled = true, mon application se bloque.

Note importante:
L'application, dans un cadre MVVM travaille plus de 99,9% du temps, naviguer entre des dizaines d'écrans. Un seul utilisateur a déclaré être en mesure de bloquer l'application en naviguant rapidement entre les deux écrans, et seulement après environ 10 avant et en arrière tente

Mes questions sont les suivantes:

Toute façon de déterminer ce qui est à l'origine?

Un moyen de l'empêcher?

Quelle est la meilleure façon de récupérer à partir de cette erreur?

Répondre

6

Followup:

Le problème a été résolu en nommant le contrôle de la vue, même si cela ne devrait pas être nécessaire

de

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

à

<telnav:RadTabItem.Content> 
<views:Detail_InfoView x:Name="DetailsInnerView"/> 
</telnav:RadTabItem.Content> 
+0

Cela m'a aidé aussi, très bizarre. – deafsheep

+0

Wow ... Je me suis cogné la tête sur ce même problème pendant quelques jours. J'étais sûr que c'était bizarre de refactoriser une mise en page dans un UserControl et/ou de régler correctement les bindings. Tout ce qui était nécessaire était de mettre le 'x: Name' sur la vue parent (sur l'élément qui référence le nouveau UserControl) et l'exception non gérée disparaît. – JaredReisinger

+0

STRANGE ... mais ça marche :) – Khurram

Questions connexes