在使用Xamarin创建的Android native 应用程序中,我在HockeyApp中获得以下崩溃报告:

Xamarin caused by: android.runtime.JavaProxyThrowable: System.NullReferenceException: Object reference not set to an instance of an object
  at System.Threading.Tasks.RangeWorker.FindNewWork (System.Int64& nFromInclusiveLocal, System.Int64& nToExclusiveLocal) [0x00000] in <8f1acca5a43d45c5b8d35add5a11806a>:0
  at System.Threading.Tasks.RangeWorker.FindNewWork32 (System.Int32& nFromInclusiveLocal32, System.Int32& nToExclusiveLocal32) [0x00000] in <8f1acca5a43d45c5b8d35add5a11806a>:0
  at System.Threading._ThreadPoolWaitCallback.PerformWaitCallback () <0xec919968 + 0x00033> in <8f1acca5a43d45c5b8d35add5a11806a>:0

我无法弄清楚是什么原因导致了此异常,因为堆栈跟踪仅包含.net代码。我查看了框架的源代码,以查看是否可以理解但无济于事。

我也曾在我的收藏夹搜索引擎中尝试过许多不同的搜索,但没有找到有关类似问题的任何帖子/文章。

从与这些崩溃相关的数据来看,这似乎是专门在三星设备(S8,S8 +和Note8)上发生的问题。我不能100%确定它不会影响其他设备,但是我只有这些设备的崩溃报告。

知道会导致这些崩溃的原因吗?我在线程处理方面是否做错了,也许是在取消 token 上做错了?有没有我无法正确处理的条件?

任何进一步解决此问题的帮助都将受到欢迎。

谢谢

编辑:

我知道没有什么可做的,但是由于这是我在HockeyApp中获得的唯一堆栈跟踪信息,因此我无法进行复制,我不知道是什么代码导致了这种情况。

我正在寻找的是关于当我自己不管理线程时可能导致Mono线程代码具有null引用异常的线索。也许此stacktrace只是一条红鲱鱼,我需要在其他地方查看?

最佳答案

引起我注意的是FindNewWork32调用-link for the .NET implementation。您的应用可能针对32位体系结构进行了编译,而您提到的三星设备具有64位处理器。

This Microsoft paper显示了如何将应用程序定向到一个或多个Android支持的CPU体系结构。您可能需要定位多个平台:

关于.net - Android Xamarin应用程序中System.Threading.Tasks.RangeWorker.FindNewWork中的NullReferenceException,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52047050/

10-10 19:39