.net – Android Xamarin应用程序中的System.Threading.Tasks.RangeWorker.FindNewWork中的NullReferenceException

前端之家收集整理的这篇文章主要介绍了.net – Android Xamarin应用程序中的System.Threading.Tasks.RangeWorker.FindNewWork中的NullReferenceException前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在我使用Xamarin创建的 Android原生应用中,我在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%确定它不会影响其他设备,但我只有那些崩溃报告.

知道什么可能导致那些崩溃吗?我是否在使用线程做错了,可能还有取消令牌?我有没有正确处理的条件?

任何有助于进一步解决这个问题的帮助都会受到欢迎.

谢谢

编辑:

我知道没有太多要做但是因为这是我在HockeyApp中获得的唯一堆栈跟踪而我无法复制,我不知道是什么代码导致了这一点.

我正在寻找的是更多关于什么可能导致Mono线程代码在我自己不管理线程时具有空引用异常的线索.或者这个堆栈跟踪只是一个红色的鲱鱼,我需要在其他地方寻找?

解决方法

吸引我注意的是FindNewWork32调用link for the .NET implementation.您的应用程序可能是针对32位架构编译的,而您提到的那些三星设备有64位处理器.

This Microsoft paper显示了如何将应用程序定位到一个或多个Android支持cpu架构.您可能需要定位多个平台:

To target multiple cpu architectures,you can select more than one ABI
(at the expense of larger APK file size). You can use the Generate one
package (.apk) per selected ABI option (described in Set Packaging
Properties) to create a separate APK for each supported architecture.

You do not have to select arm64-v8a or x86_64 to target 64-bit devices; 64-bit support is not required to run your app on 64-bit hardware. For example,64-bit ARM devices (such as the Nexus 9) can run apps configured for armeabi-v7a. The primary advantage of enabling 64-bit support is to make it possible for your app to address more memory.

猜你在找的Android相关文章