正試圖在 OS 加載程序鎖內執行託管代碼

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

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

這是由於正在加載特定資源:例如換膚控件時

 

  • 辦法一
  1. 把vs2005菜單的 調試->異常->Managed Debuggin Assistants->LoaderLock 的選中狀態去掉
  2. 如果異常(exception)這一項沒有的話,在工具---自定義---命令選項卡---左邊選擇調試--右邊把異常託到菜單裏
  3. 在"Debug"菜單下----"Exceptions"----"Managed Debugging Assistants"中勾掉"LoaderLock") 再Debug,OK,或           快捷鍵Ctrl+Alt+E,修改Managed Debuggin Assistants->LoaderLock 的選中狀態去掉
  • 方法二
  1. 在HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/.NETFramework下面增加一個String,值爲"0"

     

        不過這樣做,在該計算機上所有基於.NET2.0開發都得不到MDA的好處

http://yanfeiguo.blog.163.com/blog/static/1743846420081199562352/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章