天天看點

正試圖在 os 加載程式鎖内執行托管代碼。不要嘗試在 DllMain 或映像初始化函數内運作托管代碼...

當我在窗體初始化的時候,調用了一個外部的dill時,它就不知什麼原因的 抛出一個“正試圖在 os 加載程式鎖内執行托管代碼。不要嘗試在 DllMain 或映像初始化函數内運作托管代碼”的異常,程式就卡掉了,在網上查了查,相關說明如下:

.NET2.0中增加了42種非常強大的調試助手,MDA.Loaderlock 是其中之一。Loaderlock檢測在一個擁有作業系統loader lock的線程上運作托管代碼的情況。這樣做有可能會引起死鎖,并且有可能在作業系統加載器初始化DLL前被使用。

大緻了解:就是窗體還沒有完全生成,而你在這個時候就調用了别的dill,可能就抛出了這個異常!

解決此異常的方法為:

方法一

把vs2005菜單的 調試->異常->Managed Debuggin Assistants->LoaderLock 的選中狀态去掉 

如果異常(exception)這一項沒有的話,在工具---自定義---指令頁籤---左邊選擇調試--右邊把異常托到菜單裡 

快捷鍵Ctrl+Alt+E,修改Managed Debuggin Assistants->LoaderLock 的選中狀态去掉

方法二

在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework下面增加一個String,值為"0"

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

來自:http://blog.sina.com.cn/s/blog_657061860100ogax.html

繼續閱讀