示尝试读取或写入受保护的内存 这通常指示其它内存已损坏
C#SearchAtPoint方法老是提示尝试读取或写入受保护的内存这通常指示其它内存已损坏,怎么回事...
C# SearchAtPoint方法老是提示尝试读取或写入受保护的内存 这通常指示其它内存已损坏,怎么回事
展开
3个回答
展开全部
此类错误屡见不鲜了,特别是图像开发,Com组件操作时,不要期望本文能够给你一个明确的答复,只能给你提供解决问题的思路:
解决办法只有一种:慧眼视真或排除法,先看看排除的优先级吧:
1.如果你用了NativeCode的资源,例如:Com、ActiveX;
没有强制的释放方法,底层的com组件根据你进程调用组件的次数来控制对象的增加和释放(对象释放会延迟,com自身的问题)。
一般是调用强制垃圾回收或ao自带的回收对象的方法,效果不明显。
这种对象不释放的情况,通常出现在应用程序反复调用频率极高的情况下,调用间隔的时间小于对象回收的速度,将报这种错误。
通常是自己的程序写的机构不合理,才会产生这种情况。
自己在程序里强制释放COM资源,调用Marshal.ReleaseComObject()方法将不再使用的对象释放掉
并在可能出现异常的地方去Catch,并留下日志,转移此异常。
2.指示测试的可执行文件与 Windows 数据执行保护功能兼容。
调用dll的程序,在运行时会出现 “尝试读取或写入受保护的内存。这通常指示其他内存已损坏。"
有关更多信息,请参见 /NXCOMPAT(与数据执行保护兼容)。
编译器中加入了对DEP的安全性检查,在编译完后的exe文件中取消NXCOMPAT位可解决该问题
editbin.exe /NXCOMPAT:NO myexe
3.排除环境因素:例如.net Fx 2.0和 .net Fx 2.0 SP2差距很大的,当然其他环境因素也好考虑在内。
一定要排除开发和部署环境差异引起的问题。
4.如果是突然出现这个问题,最好是回滚到之前的操作,重做这个操作,例如移除控件,再次添加;
反注册Com,重新注册; 如果你安装了其他插件,卸除这些插件再试一试。
5.程序本身的问题。例如:数据库访问达到最大的并发量,出现死锁。或频繁的写入和读取操作,c#的垃圾回收机制造成的,即变量的回收速度大于使 用的速度造成的,这样就需要从新设计算法。
解决办法只有一种:慧眼视真或排除法,先看看排除的优先级吧:
1.如果你用了NativeCode的资源,例如:Com、ActiveX;
没有强制的释放方法,底层的com组件根据你进程调用组件的次数来控制对象的增加和释放(对象释放会延迟,com自身的问题)。
一般是调用强制垃圾回收或ao自带的回收对象的方法,效果不明显。
这种对象不释放的情况,通常出现在应用程序反复调用频率极高的情况下,调用间隔的时间小于对象回收的速度,将报这种错误。
通常是自己的程序写的机构不合理,才会产生这种情况。
自己在程序里强制释放COM资源,调用Marshal.ReleaseComObject()方法将不再使用的对象释放掉
并在可能出现异常的地方去Catch,并留下日志,转移此异常。
2.指示测试的可执行文件与 Windows 数据执行保护功能兼容。
调用dll的程序,在运行时会出现 “尝试读取或写入受保护的内存。这通常指示其他内存已损坏。"
有关更多信息,请参见 /NXCOMPAT(与数据执行保护兼容)。
编译器中加入了对DEP的安全性检查,在编译完后的exe文件中取消NXCOMPAT位可解决该问题
editbin.exe /NXCOMPAT:NO myexe
3.排除环境因素:例如.net Fx 2.0和 .net Fx 2.0 SP2差距很大的,当然其他环境因素也好考虑在内。
一定要排除开发和部署环境差异引起的问题。
4.如果是突然出现这个问题,最好是回滚到之前的操作,重做这个操作,例如移除控件,再次添加;
反注册Com,重新注册; 如果你安装了其他插件,卸除这些插件再试一试。
5.程序本身的问题。例如:数据库访问达到最大的并发量,出现死锁。或频繁的写入和读取操作,c#的垃圾回收机制造成的,即变量的回收速度大于使 用的速度造成的,这样就需要从新设计算法。
2016-05-19
展开全部
朋友,这是你的电脑“丢失”或“误删”了“系统文件”,或“系统文件”被病毒和“顽固”木马“破坏”,我给你7种方法:(答案原创,严禁复制)1.下载个:“360系统急救箱”或“金山急救箱”,(1)先“查杀”病毒,再删除后,“立即重启”!(2)重启开机后,再点开“隔离|恢复”,点:“彻底删除”病毒文件和“可疑自启动项”!(3)再点开“修复”,“全选”,再“修复”文件!(4)再点开:“恢复丢失的dll文件”,扫描一下,如果没有就行了!2。用“360安全卫士”的“扫描插件”,然后再“清理插件”,把它删除!3。再用“360杀毒双引擎版”,“全盘扫描”,病毒木马,再点删除!4。重启电脑后,来到“隔离区”,点“彻底删除”!5。用“360安全卫士”里“修复IE”,点击“使用360安全网址导航”,再“全选”,“一键修复”,“返回”!6.如果,以上方法不行,重启电脑,开机后,按F8,回车,回车,进到“安全模式”里,“高级启动选项”里,“最后一次正确配置”,按下去试试,看看效果!7.实在不行,做“一键还原”系统!(方法:我的百度空间的博客里有)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如果库是稳定的,那就是你参数传错了,尤其是指针参数更容易出现这个问题。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询