如何从Silverlight UnhandledException中恢复

时间:2011-07-21 14:06:28

标签: silverlight silverlight-4.0 unhandled-exception

在我的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 个答案:

答案 0 :(得分:6)

<强>跟进:

通过命名视图控件解决了问题,即使不需要它也是

来自

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

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