正嘗試在 OS 載入程序鎖內執行托管代碼。不要嘗試在 DllMain 或映像初始化函數內執行托管代碼,這樣做會導致應用程序掛起。


出錯提示:

正嘗試在 OS 載入程序鎖內執行托管代碼。

不要嘗試在 DllMain 或映像初始化函數內執行托管代碼,這樣做會導致應用程序掛起。




原因分析:

.NET2.0中添加了42種非常強大的調試助手(MDA。Loaderlock 是當中之中的一個。Loaderlock檢測在一個擁有操作系統loader lock的線程上執行托管代碼的情況。這樣做有可能會引起死鎖。而且有可能在操作系統載入器初始化DLL前被使用。盡管 這樣做非常有必要。但在進行開發調試的時候,實在太麻煩。

這是因為正在載入特定資源:比如換膚控件等。


解決方式一:


1、把VS菜單的 調試->異常->Managed Debuggin Assistants->LoaderLock 的選中狀態去掉


2、假設異常(exception)這一項沒有的話,在工具---自己定義---命令選項卡---左邊選擇調試--右邊把異常托到菜單里。
3、快捷鍵Ctrl+Alt+E,改動Managed Debuggin Assistants->LoaderLock 的選中狀態去掉。




解決方式二:


1、在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework以下添加一個String,值為"0"
2、只是這樣做,在該計算機上全部基於.NET2.0開發都得不到MDA的優點


參考文章:

http://blog.csdn.net/kissqi/article/details/4872316



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM