程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 正試圖在 os 加載程序鎖內執行托管代碼。不要嘗試在 DllMain 或映像初始化函數內運行托管代碼,osdllmain

正試圖在 os 加載程序鎖內執行托管代碼。不要嘗試在 DllMain 或映像初始化函數內運行托管代碼,osdllmain

編輯:C#入門知識

正試圖在 os 加載程序鎖內執行托管代碼。不要嘗試在 DllMain 或映像初始化函數內運行托管代碼,osdllmain


當我在窗體初始化的時候,調用了一個外部的dll,它就不知什麼原因的 拋出一個“正試圖在 os 加載程序鎖內執行托管代碼。不要嘗試在 DllMain 或映像初始化函數內運行托管代碼”的異常,程序就卡掉了,在網上查了查,相關說明如下: .NET2.0中增加了42種非常強大的調試助手,MDA.Loaderlock 是其中之一。Loaderlock檢測在一個擁有操作系統loader lock的線程上運行托管代碼的情況。這樣做有可能會引起死鎖,並且有可能在操作系統加載器初始化DLL前被使用。 大致理解:就是窗體還沒有完全生成,而你在這個時候就調用了別的dll,可能就拋出了這個異常! 解決此異常的方法為: 方法一 把vs菜單的 調試->異常->Managed Debuggin Assistants->LoaderLock 的選中狀態去掉  如果異常(exception)這一項沒有的話,在工具---自定義---命令選項卡---左邊選擇調試--右邊把異常托到菜單裡  快捷鍵Ctrl+Alt+E,修改Managed Debuggin Assistants->LoaderLock 的選中狀態去掉   方法二 在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework下面增加一個String,值為"0"  不過這樣做,在該計算機上所有基於.NET2.0開發都得不到MDA的好處。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved