正试图在 os 加载程序锁内执行托管代码。不要尝试在 DllMain 或映像初始化函数内运行托管代码
2015-07-07 10:39
239 查看
当我在窗体初始化的时候,调用了一个外部的dill时,它就不知什么原因的 抛出一个“正试图在 os 加载程序锁内执行托管代码。不要尝试在 DllMain 或映像初始化函数内运行托管代码”的异常,程序就卡掉了,在网上查了查,相关说明如下:
.NET2.0中增加了42种非常强大的调试助手,MDA.Loaderlock 是其中之一。Loaderlock检测在一个拥有操作系统loader lock的线程上运行托管代码的情况。这样做有可能会引起死锁,并且有可能在操作系统加载器初始化DLL前被使用。
大致理解:就是窗体还没有完全生成,而你在这个时候就调用了别的dill,可能就抛出了这个异常!
解决此异常的方法为:
在菜单中选择 “调试->异常”,打开异常设置窗口(也可通过快捷键Ctrl+Alt+E打开),在异常窗口中找到 “Managed Debuggin Assistants->LoaderLock”,将该项“引发”的状态框中的对勾去掉,最终设置结果如下图所示:
如果异常(exception)这一项没有的话,在工具---自定义---命令选项卡---左边选择调试--右边把异常托到菜单里
快捷键Ctrl+Alt+E,修改Managed Debuggin Assistants->LoaderLock 的选中状态去掉
在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework下面增加一个String,值为"0"
不过这样做,在该计算机上所有基于.NET2.0开发都得不到MDA的好处。
建议使用第一种方法,亲测有效
本文部分内容转自http://www.cnblogs.com/lcxu2/archive/2011/01/16/2004016.html
.NET2.0中增加了42种非常强大的调试助手,MDA.Loaderlock 是其中之一。Loaderlock检测在一个拥有操作系统loader lock的线程上运行托管代码的情况。这样做有可能会引起死锁,并且有可能在操作系统加载器初始化DLL前被使用。
大致理解:就是窗体还没有完全生成,而你在这个时候就调用了别的dill,可能就抛出了这个异常!
解决此异常的方法为:
方法一
在菜单中选择 “调试->异常”,打开异常设置窗口(也可通过快捷键Ctrl+Alt+E打开),在异常窗口中找到 “Managed Debuggin Assistants->LoaderLock”,将该项“引发”的状态框中的对勾去掉,最终设置结果如下图所示:如果异常(exception)这一项没有的话,在工具---自定义---命令选项卡---左边选择调试--右边把异常托到菜单里
快捷键Ctrl+Alt+E,修改Managed Debuggin Assistants->LoaderLock 的选中状态去掉
方法二
在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework下面增加一个String,值为"0"不过这样做,在该计算机上所有基于.NET2.0开发都得不到MDA的好处。
建议使用第一种方法,亲测有效
本文部分内容转自http://www.cnblogs.com/lcxu2/archive/2011/01/16/2004016.html
相关文章推荐
- 基于多项滤波的数字正交变换MATLAB仿真程序
- Java实现Html转PDF
- maven web 项目中启动报错java.lang.ClassNotFoundException: org.springframework.web.util.Log4jConfigListener
- c++异常管理(二)---setjmp、longjmp与自动变量
- ubunut jdk 配置
- Java集合类详解
- php编译错误:configure: error: Please reinstall the iconv library.
- Spring + Shiro
- 10行代码编写一个c++服务器
- java判断字符串是否为空
- Java注解
- nyoj阶乘分解因式(1)
- 关于C++builder中精度丢失的问题
- 算法基础:删除字符串中出现次数最少的字符(Golang实现)
- Delphi与各种装置设备之间的开发整合及应用实例
- C++读取特定路径下文件目录及文件名称&&文件结构
- [深入学习C#]完成异步委托的三种方式
- C#关于摄像头的使用
- Python连接PostgreSQL
- eclipse内存设置