读取或写入受保护
1.dll文件应该是C++写的。封装了之后供我的C#程序调用,结果就提示了错误:尝试读取或写入受保护的内存。这通常指示其他内存已损坏。错误类型为:System.AccessViolationException。

跨线程操作引起的?因为我的dll控制的是硬件,应该绑定的是窗体句柄。我操作的时候是在一个事件event中操作的,大家知道event是另开线程的。

于是使用委托解决了以上问题:

C#代码 收藏代码
private delegate void CloseDevDelegate();

    private void CloseDev()  {  if (this.InvokeRequired)  {  CloseDevDelegate closeDev = new CloseDevDelegate(CloseDev);  this.BeginInvoke(closeDev);  }  else  {  Program.DEVICE.CloseDev();  }  }

在事件中使用:CloseDev()

大功告成!原来是跨线程操作com口引起的错误。

2.在C#中调用别人的DLL的时候有时候出现 尝试读取或写入受保护的内存 。这通常指示其他内存已损坏。

在传值的时候还是用指针,再在C#中做转换就好了。

C#代码 收藏代码

[DllImport("APPLISTCC.dll")]
public static extern string TestFunc1(string param1);  string ret1 = TestFunc1("text");

//改成:

[DllImport("APPLISTCC.dll")]
public static extern IntPtr TestFunc1(IntPtr par1);  IntPtr ptrIn = Marshal.StringToHGlobalAnsi("text");
IntPtr ptrRet = TestFunc1(ptrIn);
string retlust = Marshal.PtrToStringAnsi(ptrRet);

自己在程序里强制释放COM资源,调用Marshal.ReleaseComObject()方法将不再使用的对象释放掉

3.很多人用C#编程的时候会碰到这个问题。代码一点都没写,只是添加了一个控件,调试就会出现AccessViolationException这个错误。

SharpDevelop的错误提示:

Unhandled exception
An exception of type System.AccessViolationException was thrown:
System.AccessViolationException: 尝试读取或写入受保护的内存。这通常指示其他内存已损坏。

这个其实不是什么系统兼容性问题,是软件冲突。

VS和ATI显卡的软件catalyst control center冲突。

把catalyst control center卸载,问题就解决了。

重新安装catalyst control cente的时候就有卸载选项。

4.如果你用了NativeCode的资源,例如:Com、ActiveX;
没有强制的释放方法,底层的com组件根据你进程调用组件的次数来控制对象的增加和释放(对象释放会延迟,com自身的问题)。
一般是调用强制垃圾回收或ao自带的回收对象的方法,效果不明显。
这种对象不释放的情况,通常出现在应用程序反复调用频率极高的情况下,调用间隔的时间小于对象回收的速度,将报这种错误。
通常是自己的程序写的机构不合理,才会产生这种情况。
自己在程序里强制释放COM资源,调用Marshal.ReleaseComObject()方法将不再使用的对象释放掉
并在可能出现异常的地方去Catch,并留下日志,转移此异常。

5.指示测试的可执行文件与 Windows 数据执行保护功能兼容。
调用dll的程序,在运行时会出现 “尝试读取或写入受保护的内存。这通常指示其他内存已损坏。"
有关更多信息,请参见 /NXCOMPAT(与数据执行保护兼容)。
编译器中加入了对DEP的安全性检查,在编译完后的exe文件中取消NXCOMPAT位可解决该问题
editbin.exe /NXCOMPAT:NO myexe

6.排除环境因素:例如.net Fx 2.0和 .net Fx 2.0 SP2差距很大的,当然其他环境因素也好考虑在内。
一定要排除开发和部署环境差异引起的问题。

7.如果是突然出现这个问题,最好是回滚到之前的操作,重做这个操作,例如移除控件,再次添加;
反注册Com,重新注册; 如果你安装了其他插件,卸除这些插件再试一试。

8.程序本身的问题。例如:数据库访问达到最大的并发量,出现死锁。或频繁的写入和读取操作,c#的垃圾回收机制造成的,即变量的回收速度大于使 用的速度造成的,这样就需要从新设计算法。

C# 尝试读取或写入受保护的内存,这通常指示其他内存已损坏。常见解决办法相关推荐

  1. C#尝试读取或写入受保护的内存。这通常指示其他内存已损坏。

    用VS2012调试时发现在调用数据集时提示"尝试读取或写入受保护的内存.这通常指示其他内存已损坏." 用管理员身份运行CMD,输入netsh winsock reset并回车 转载 ...

  2. C# 尝试读取或写入受保护的内存,这通常指示其他内存已损坏。错误类型为:System.AccessViolationException。...

    C# 尝试读取或写入受保护的内存,这通常指示其他内存已损坏.解决方案 报错 dll文件应该是C++写的.封装了之后供我的C#程序调用,结果就提示了错误:尝试读取或写入受保护的内存.这通常指示其他内存已 ...

  3. asp.net报错“尝试读取或写入受保护的内存。这通常指示其他内存已损坏”的解决办法...

    "System.AccessViolationException"类型的未经处理的异常在 System.Data.dll 中发生 其他信息: 尝试读取或写入受保护的内存.这通常指示 ...

  4. halcon图片上传到mysql_C# 10个线程并发执行Halcon图像算法 报“尝试读取或写入受保护的内存。这通常指示其他内存已损坏。”...

    如题,这个问题本人已经纠结了快三个工作日了.本人不同WinFrom程序一起动就会开启10个线程,并发对10张图片进行算法处理,问题是只要程序一起动就会报"尝试读取或写入受保护的内存.这通常指 ...

  5. 关闭ArcGIS9.3时 .NET Framework出现尝试读取或写入受保护的内存问题

    新安装了ArcGIS9.3,本来学校有正版的授权服务器.但是感觉ESRI赠送给我们的正版软件有几个模块不能用,比如Data Interoperability Tools貌似就没有.于是在网上找破解的方 ...

  6. 新中新二代身份证dll调用,报尝试读取或写入受保护的内存,这通常指示其他内存已损坏 这个错 ...

    新中新二代身份证dll调用问题:调用这个dll时, 到这个方法: Syn_ReadMsg(nPort, 0, ref CardMsg),就报尝试读取或写入受保护的内存.这通常指示其他内存已损坏 这个错 ...

  7. System.AccessViolationException:“尝试读取或写入受保护的内存。这通常指示其他内存已损坏。”

    System.AccessViolationException:"尝试读取或写入受保护的内存.这通常指示其他内存已损坏." 错误源代码: void CTPMDAdapter::Re ...

  8. System.AccessViolationException: 尝试读取或写入受保护的内存。这通常指示其他内存已损坏。...

    昨天写的RC4的加解密程序,当C#调用C的dll时就会出现这个提示,尝试怎么修改都不行.Debug跟踪显示,应该返回string类型的函数返回值为空.也不知道怎么调试dll,dll里下的断点始终提示无 ...

  9. xp补丁导致 vs2008 出现 尝试读取或写入受保护的内存。这通常指示其他内存已损坏 的解决办法

    此补丁在360安全卫士发布于 2012年8月13日 名叫 KB2731847 Windows内核驱动权限提升漏洞 安装后导致 vs2008 的项目 出现 尝试读取或写入受保护的内存.这通常指示其他内存 ...

  10. 程序出现异常尝试读取或写入受保护的内存这通常指示其他内存已损坏

    "尝试读取或写入受保护的内存这通常指示其他内存已损坏". System.AccessViolationException: Attempted to read or write p ...

最新文章

  1. 数据库范式(1NF、2NF、3NF、BCNF)
  2. 计算机网络读后感500字,《网络少年》观后感500字作文
  3. 红帽JBoss企业应用平台7.0 ALPHA发布了!
  4. 2013q3 android ios 用户接入网络方式pv占比分布,2012年移动互联网发展分析.pdf
  5. Leetcode 509. Fibonacci Number
  6. MAMP Pro for Mac(PHP/MySQL开发环境)v6.6
  7. 时尚服装行业挑战及软件机遇分享 -- 许鹏
  8. CMMI认证办理需要什么条件
  9. 小程序云函数实现微信支付如此简单
  10. Pyserial相关知识
  11. 武汉大学计算机学院 田海院长,玄跻峰 - 教师简历 CV- 武汉大学计算机学院
  12. CATIA V5-6 R2017 支架类零件设计
  13. 模拟鼠标/键盘 .NET实现
  14. 用java制作扑克牌_java实现简单扑克牌游戏
  15. PS创意合成苹果橘子
  16. 微信小程序授权之getuserInfo
  17. 群、环、域的概念总结
  18. Navicat Premium 15安装教程
  19. linux python优势_来讲讲 Julia胜于Python的5个优势
  20. PHP Warning: include(./sys/xxx.php): failed to open stream: No such file or directory

热门文章

  1. Flask之sqlalchemy过滤、外键和表单关系
  2. zzulioj1555: 神殿【二进制拆分】
  3. 我校百日誓师大会宣言
  4. python爬虫 常见的 插件和 用法持续更新
  5. Java EE :MySQL数据库MavenMybatis框架 知识汇总
  6. 安徽:0.1元优粮优购的正效应
  7. 计算机语言送祝福,二十种编程语言齐送鼠年祝福
  8. spring boot实现发送邮件以及群发邮件
  9. Android 面试题汇总
  10. python selenium手动输入验证码_案例:selenium实现登录百度(如有验证码,需要手动输入)...