我负责一个已知会抛出此错误的应用程序。
id == 4
不幸的是我自己无法复制它。
我的问题是,我该如何进行诊断/调试呢?我有违规指令的内存位置,但我可能追溯到我的代码中的一行吗?即The instruction at 0x09537333 referenced memory at 0x00000000. The memory could not be read.
是指相对于我的应用程序的位置还是在操作系统内(Windows 7 Embedded)?
有没有其他方法可以获得有关此错误的更多信息?我的代码中是否有任何已知的常见原因?
答案 0 :(得分:1)
我已经解决了这个问题 - 如果其他人遇到同样的问题,这里有一些信息。
进行了更多研究,发现此访问冲突错误可能是由对非托管函数/代码的调用中的错误引起的(例如,用C ++编写的dll) -
try... catch
通常不会捕获此错误,但如果将其添加到app.config文件中,则会执行此操作:
<runtime>
<legacyCorruptedStateExceptionsPolicy enabled="true" />
</runtime>
这是一种可能性。
但实际上在我的情况下,错误是由一个线程在一个表单上运行异常长时间引起的。
表格在完成之前已经关闭。在线程结束时,它试图隐藏表单上的按钮。由于表单现在是Disposed,因此抛出了Access Violation错误。
我通过解决导致线程运行这么长时间的问题来修复它,但也是&#34;以防万一&#34;,添加
if (this.IsDisposed)
{
return;
}
...在处理按钮之前。
答案 1 :(得分:0)
每当0x00000000是无法读取的地址时,你所拥有的是空指针解除引用。
答案 2 :(得分:0)
您可以通过以下方式解决此问题:
卸载有问题的软件或
更新驱动程序或
- 醇>
按照说明操作:
右键单击“我的电脑”图标,然后转到“高级” 选项卡,然后单击“性能”下的“设置”。然后再次转到“高级”选项卡,然后单击“更改”按钮 虚拟内存。执行这些更改后,您可以重新启动计算机 如果它消失就看问题。