|
1
3
我找到了我的空引用。就像弗雷德里克和米卡坦建议的那样,我没有为社区提供足够的信息来找到解决方案,所以我想我应该把我发现的发布出来,只是为了让它休息一下。 这是对正在发生的事情的描述:
问题是我使用了“something”变量作为临时的强引用,直到更新方法获得永久引用。在发布模式下,编译器会优化掉“something=m_object.add();”赋值,因为“something”在再次赋值之前不会被使用。这允许对isometing进行垃圾收集,因此当我尝试访问它时,它不再存在于m_集合中。 我所要做的就是确保在电话更新之前我一直持有一份强有力的推荐信。 我怀疑这对任何人都有用,但如果有人好奇,我不想让这个问题没有答案。 |
|
2
2
它记录了“十”这个事实,这让我首先想到:
如果没有足够的上下文,很难说出来——但这就是我将如何调查的。您还可以添加一个简单的
您现有的代码应该调用新的
|
|
|
3
0
同意W/Fredrik——需要更多细节。一个可能开始寻找的地方:您提到了多线程应用程序以及在发行版中发生的错误,但没有提到调试。您可能遇到一个时间问题,多个线程访问同一对象引用。 不管怎样,我可能还会放一个:
就在循环迭代之前。在释放模式下它不会帮助您,但如果(什么时候?),它可能会帮助您解决问题。它发生在调试中。 |
|
|
4
0
我将查找将logger或其依赖项之一设置为空的代码。记录器的属性在设置为空时是否可能触发此事件?发布模式有时会加快应用程序的执行速度,从而揭示被调试模式和/或调试器的性能惩罚掩盖的同步问题。 |
|
|
5
0
事实上,“11”没有被记录,这让我相信在调用之前,记录器被设置为空。你能把它包装在一个try/catch中看看它是否碰到了块的catch部分吗?也许您可以插入一个消息框。当发生这种情况时,显示或写入某个已知文件。 |
|
|
6
0
是否从多个线程修改ClassItemCollection?如果在另一个线程中更改集合,则可能会使迭代器无效,这可能会导致异常。您可能需要用锁保护访问。 编辑: 你能发布更多关于ClassItem和ClassItemCollection类型的信息吗? 另一种可能性是ClassItem是值类型,ClassItemCollection是通用集合,并且不知何故会向集合中添加空值。以下引发NullReferenceException:
这个特殊的问题可以通过int来解决?我或对象i在foreach中或使用通用容器。 |