Xamarin在VS2015中出现异常情况

4
我正在开发一个与BLE设备通信的应用程序。 到目前为止,一切都正常,但当我多次从一个活动切换时,会出现无法调试的异常。
01-26 09:06:43.040 I/Timeline(7341): 时间轴:Activity_launch_request id:BLEAPPtime:710885426 对象引用未设置为对象的实例。System.NullReferenceException:对象引用未设置为对象的实例。在Xamarin.VisualStudio.Debugger.AD7DebugExceptionEvent..ctor(Thread thread,String description)中,位于C:\Users\builder\data\lanes\2599\1390b70a\source\XamarinVS\src\Core\VisualStudio\Debugging\MonoTools.Engine\AD7Events.cs:line 433。在Xamarin.VisualStudio.Debugger.ExceptionsAdapter.OnUnhandledException(Object sender,TargetEventArgs args)中,位于C:\Users\builder\data\lanes\2599\1390b70a\source\XamarinVS\src\Core\VisualStudio\Debugging\MonoTools.Engine\ExceptionsAdapter.cs:line 67。在Mono.Debugging.Client.DebuggerSession.OnTargetEvent(TargetEventArgs args)中,在Mono.Debugging.Soft.SoftDebuggerSession.HandleBreakEventSet(Event[] es,Boolean dequeuing)中处理Break事件。在Mono.Debugging.Soft.SoftDebuggerSession.HandleEventSet(EventSet es)中处理事件集。线程完成:#6 线程“”(0x6)已退出代码0(0x0)。

如果我调试每一步,直到我的活动在最后的代码括号处完成,然后我得到了这个奇怪的异常,我不知道它来自哪里。

有人知道如何调试这个问题吗?或者了解这个BUG吗?

https://bugzilla.xamarin.com/show_bug.cgi?id=38122


1
对我来说,这似乎是Xamarin中的一个错误。你能在这里发布吗:https://bugzilla.xamarin.com/ - Jakub Holovsky
完全没有帮到我。 - Stefan van de Laarschot
2个回答

2
我这里有完全相同的问题,您可以看到以下截图:

第一个错误屏幕

第二个错误屏幕

我强烈认为BLE类和Xamarin.Android调试器存在缺陷。

在我看来,如果我放在

RangeNotifier_DidRangeBeaconsInRegionComplete/MonitorNotifier_EnterRegionComplete和MonitorNotifier_ExitRegionComplete中的所有代码

都没问题,那就没有问题,但是如果有空引用或其他失败,我就会遇到这个问题,整个调试系统就会卡住。

根据我在Visual Studio中使用这项技术的经验,我可以说我只能第一次跟踪DidRangeBeaconsInRegionComplete,然后它自己运行,即使我清楚地看到程序继续运行也不会停止。

我还注意到,当它无法正常工作时,我可以设置断点,整个程序就会卡在这个点,但我在Visual Studio中看不到断点,有时候就会出现这些错误。

我的建议是:

首先,请仔细检查您从BLE库中放入此方法的代码中是否存在空对象或问题。例如,先在外部测试功能。
清理解决方案后,始终删除bin和obj文件夹,就像Breakpoints and Exceptions stopped working properly, xamarin android中所说的那样。
让我们等待更新并祈祷我们仍然能完成我们正在做的应用程序!
希望这有所帮助,因为我也处于同样的困境,感觉非常糟糕!

谢谢,是的,我希望我也能在Xamarin上创建一个Bugzilla。 - Stefan van de Laarschot

2

经过数小时和数天的努力,我终于找到了问题所在!问题在于我的应用程序执行任务的时间太长,因此我将其包装成了后台任务。

new Task (() => 
{ 
   //Your code here... 

}).Start();

所以请记住,即使执行时间不长,您仍需要连接长时间执行的任务!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接