VS2015中的Xamarin奇怪异常

时间:2016-01-26 10:41:13

标签: c# android xamarin

我正在开发一个与BLE设备通信的APP。 一切正常,但是当我从一个活动切换多次时,我得到了一个不可取的例外:

  

01-26 09:06:43.040 I / Timeline(7341):时间表:   Activity_launch_request id:BLEAPPtime:710885426对象引用不是   设置为对象的实例。 System.NullReferenceException:Object   引用未设置为对象的实例。在   Xamarin.VisualStudio.Debugger.AD7DebugExceptionEvent..ctor(线程   thread,String description)in   C:\ Users \用户助洗剂\数据\车道\ 2599 \ 1390b70a \源\ XamarinVS \ SRC \核心\ VisualStudio的\调试\ MonoTools.Engine \ AD7Events.cs:线   433在   Xamarin.VisualStudio.Debugger.ExceptionsAdapter.OnUnhandledException(对象   发件人,TargetEventArgs args)in   C:\ Users \用户助洗剂\数据\车道\ 2599 \ 1390b70a \源\ XamarinVS \ SRC \核心\ VisualStudio的\调试\ MonoTools.Engine \ ExceptionsAdapter.cs:线   67点   Mono.Debugging.Client.DebuggerSession.OnTargetEvent(TargetEventArgs   args)at   Mono.Debugging.Soft.SoftDebuggerSession.HandleBreakEventSet(比赛[]   es,Boolean dequeuing)at   Mono.Debugging.Soft.SoftDebuggerSession.HandleEventSet(EventSet es)at   Mono.Debugging.Soft.SoftDebuggerSession.EventHandler()线程   完成:#6线程'' (0x6)已退出代码0(0x0)。

我不知道它来自哪里如果我调试每一步都要过去,直到我的活动在最后一个代码括号结束然后我得到这个 奇怪的例外。

有人有任何线索如何调试吗? 或关于这个BUG。

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

2 个答案:

答案 0 :(得分:2)

我在这里有完全相同的问题你可以看到捕获:

FirstError screen

SecondError screen

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

在我看来,如果我放入的所有代码

  

RangeNotifier_DidRangeBeaconsInRegionComplete /   MonitorNotifier_EnterRegionComplete和MonitorNotifier_ExitRegionComplete

是没关系然后没有问题,但如果有空引用或其他失败我得到这个问题和整个调试系统它被卡住了。

根据我在visual studio中使用这项技术的经验,我可以说我可以在第一次使用调试时跟随DidRangeBeaconsInRegionComplete,然后自动进行,即使我能清楚地看到程序仍在继续,它也不会停止。

我还注意到,当它不能正常工作时,我可以设置一个断点,整个程序都停留在这一点上,但我看不到视觉工作室中的破坏,有时我发布的这些错误出现了。

我的建议是:

  1. 首先,检查您从BLE库中放入此方法的代码中是否存在空对象或问题。 例如,首先在外部测试功能。
  2. 按照 Breakpoints and Exceptions stopped working properly, xamarin android中的说法清除解决方案后,始终删除bin和obj文件夹。
  3. 让我们等待更新,并祈祷我们可以完成我们正在做的应用!!
  4. 我希望它有所帮助,因为我处于相同的情况而且它太糟糕了!

答案 1 :(得分:2)

经过数小时和数天的努力,我发现了问题! 问题是我的应用程序花了很长时间来执行他的任务,所以我把它包装在后台任务上

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

}).Start();

所以请记住,即使花费的时间不长,也需要连接长时间执行的任务! `