2012-04-14 66 views
1

有一点奇怪,我的Windows Phone应用程序会在没有任何警告的情况下退出,大部分时候它可以正常工作。Windows Phone的这种例外的原因是什么

然后我跟踪Application_UnhandledException,发现异常消息是:

[ExceptionMessage]:[NullReferenceException] 
[StackTrace]:[ 
    at wpapp.MainPage.<DispatcherLoad>b__1(Object sender, EventArgs e) 
    at MS.Internal.CoreInvokeHandler.InvokeEventHandler(Int32 typeIndex, Delegate handlerDelegate, Object sender, Object args) 
    at MS.Internal.JoltHelper.FireEvent(IntPtr unmanagedObj, IntPtr unmanagedObjArgs, Int32 argsTypeIndex, Int32 actualArgsTypeIndex, String eventName) 
] 

没有详细的资料给我找出异常的原因。有没有人遇到过这个异常,并得到了解决方案?

任何建议,将不胜感激。

回答

2

从它的外观来看,很可能您的MainPage中有一个DispatcherLoad方法,并且您在该方法中调用了一个lambda函数。喜欢的东西:

private void DispatcherLoad() 
    { 
     this.Dispatcher.BeginInvoke(() => Console.WriteLine("hello world;")); 
    } 

的误差在lambda存在的(我的样品中:在Console.WriteLine("hello world;")部分)。所以现在你只需要找到正确的lambda,并找出你的代码崩溃的原因。

鉴于“对象发件人,EventArgs e”参数,它可能是一个事件处理程序。你是否在DispatcherLoad函数中的某个地方将一个lambda分配给一个事件处理程序?例如:

private void DispatcherLoad() 
    { 
     this.Button.Click += (sender, e) => Console.WriteLine("hello world;"); 
    } 

注:如果在你的方法很多lambda表达式,你找不出哪一个崩溃,你可以尝试用反射器开口的组件(http://www.reflector.net/) 。它会反编译你的dll,然后你可以看到哪个lambda叫做“<DispatcherLoad> b__1”。

+0

谢谢,KooKiz。 – ellic 2012-04-15 05:39:50

相关问题