发生时在Windows Phone中的System.Windows.ni.dll中发生类型为"'System.Reflection.TargetInvocationException'的未处理异常

asi*_*tis 12 c# windows-phone-7 windows-phone-8

我正在创建一个用于获取,创建,更新和删除数据并显示数据的WP8应用程序Web Service.
现在的问题是我的应用程序通过抛出崩溃

在Windows Phone中的System.Windows.ni.dll中出现类型为"'System.Reflection.TargetInvocationException'的未处理异常

在此输入图像描述

这个例外没有堆栈跟踪,我坚持这个问题几个小时.我注意到,只要比正常更频繁地调用服务,就会发生此异常,但我没有得到实际原因.

知道
1.这有什么类型的例外真的很有帮助?
2.这会发生什么情况?
3.由于这个例外,我们如何处理应用程序崩溃?

Oli*_*ier 14

你的评论

你是对的 .得到一个内部异常对象说"在MyApp.ViewModels.CreateViewModel.d__61.MoveNext()---从抛出异常的前一个位置的堆栈跟踪结束---在System.Runtime.CompilerServices.AsyncMethodBuilderCore.b__0(对象状态) "消息:对象引用未设置为对象的实例.

只是在某个地方显示,你正在调用一个不等待的异步方法:当一个方法返回一个任务时,总是等待它.

你的内部异常应该有一个内部异常(即$ exception.InnerException.InnerException,其中stacktrace将显示你的NullReferenceException的位置)

当您的代码中没有处理代码中的异常时,会调用UnhandledException事件,并且应用程序不知道如何处理它.默认情况下,它会使您的应用崩溃.但是,您可以阻止您的应用在这些情况下崩溃.看到这个以了解更多信息.

要解决您的问题"干净的方式",您必须找到不等待您的代码的地方,并修复它.即某处你会发现:

myObject.DoSomethingAsync(); // DoSomethingAsync() returns a task.
Run Code Online (Sandbox Code Playgroud)

更改 :

try
{
   await myObject.DoSomethingAsync(); // DoSomethingAsync() returns a task.
}catch(Exception ex)
{
   // display error message or whatever
}
Run Code Online (Sandbox Code Playgroud)

[edit]这将处理错误,但你真正想要解决的是你的nullref异常的原因.我没有那么多的线索,但它看起来像一个线程并发问题.

  • 该文本应为粗体"当方法返回任务时,始终等待它." 通过几个小时的调试节省了我,因为我正在寻找代码中的其他地方. (4认同)