【转】尝试在关闭一个被调试的程序时出现如下错误:
检测到LoaderLock
DLL“C:WINDOWSassemblyGAC........dll”正试图在 OS 加载程序锁内执行托管代码。不要尝试在DllMain 或映像初始化函数内运行托管代码,这样做会导致应用程序挂起。
检测到LoaderLock
DLL“C:WINDOWSassemblyGAC........dll”正试图在 OS 加载程序锁内执行托管代码。不要尝试在DllMain 或映像初始化函数内运行托管代码,这样做会导致应用程序挂起。
最简单的方法,在"Debug"菜单下----"Exceptions"----"Managed Debugging Assistants"中掉"LoaderLock"
说明:
.NET2.0中增加了42种非常强大的调试助手(MDA) ,Loaderlock是其中之一。Loaderlock检测在一个拥有操作系统loader lock的线程上运行托管代码的情况。这样做有可能会引起死锁,并且有可能在操作系统加载器初始化DLL前被使用。虽然这样做很有必要,但在进行开发调试的时候,实在太麻烦.当然修改注册表也是解决办法之一,不过这样做,在这样所有基于.NET2.0开发等于禁用了MDA的优点。
【原创】以上方法是在2008年时一位网友的帖子,在vs2008中并不适用,解决办法为项目-》**属性-》调试-》点选“启用非托管代码调试”。