请问一下如何解决System.AccessViolationException错误

之前公司编写的程序在Win7上运行正常,当.net 2.0换成.net 4.5并且在win10上运行时就会出现System.AccessViolationException错误。
登录该程序过后就会弹出一个功能选择Form,其中有个ComboBox控件,能够通过下拉框选择不同功能。

选择后就会进入SelectedIndexChanged事件,如图为部分代码,通过不同的选项产生对应的功能界面。

功能界面右上角也有个下拉框,能够弹出新的功能选择界面。

现在就是当频繁这样操作后就会出现System.AccessViolationException错误,而且出错的时间不固定。
有时产生两个功能界面就出错,有时产生十几个功能界面才出错。
请问下各位有遇见过这样的问题吗?如何解决。

...全文
555 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 4 楼 清晨曦月的回复:
这个需求还真没做过,问问度娘和谷歌吧,实在不行自力更生,找个注册表监视器,然后手动操作一下,一般就可以咯
已经解决了,修改注册表就行,用兼容模式运行就是在注册表加一对键值,找到exe所在地方,加进去重启软件之后就是以兼容模式运行
清晨曦月 元老 2019-11-22
  • 打赏
  • 举报
回复
这个需求还真没做过,问问度娘和谷歌吧,实在不行自力更生,找个注册表监视器,然后手动操作一下,一般就可以咯
清晨曦月 元老 2019-11-16
  • 打赏
  • 举报
回复

检查在定义全局变量时调用了哪些函数进行初始化
检查show时会调用的各个控件的、自定义的各个函数
例如这个selectidxchange就是一个。。
这个是内存读写权限错误来着?
如果只是调试时有问题,可以尝试在调试设置中取消jit优化。
如果还是有问题,可以尝试逐段删除你的代码,然后找到具体出错的语句。
检查你调用的API的声明、参数是否正确,尤其是句柄是否为intptr.zero,操作的控件或进程是否已经创建,操作地址时首先设置地址可读,查询API函数调用时是否需要权限,提升进程权限等等。。。你这个问题太笼统了,慢慢查吧,先确定代码中具体出现问题的语句,调试器不知道你可以删除后面的语句然后逐渐加进去来找到它
  • 打赏
  • 举报
回复
通过断点调试发现频繁使用后是在新的窗口load后shown前出现的异常,load后shown前中间没有再经过别的方法。后来我考虑可能是环境的问题,然后在win10下对该程序开启兼容模式异常就不再出现了。但是现在就有个问题,这软件发布后在用户电脑里直接对快捷方式无法设置兼容性,需要在磁盘里全局搜索找到对应的.exe文件才能够设置兼容性。我就在想有没有什么办法能够在安装软件的过程中修改注册表让其具备win10下的兼容性,或者在程序运行时自动打开won10下的兼容性设置进行设置。请问下这你知道怎么做吗?
  • 打赏
  • 举报
回复
都没人吗?我自己断点调试了一下,在真的界面Load成功后,Shown前产生的该异常,找半天找不到错误原因。

16,552

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧