.net Assembly.Load重複加載程序集造成執行異常

最近ET做熱更重載dll的時候,返回登陸會重新檢測新的dll,首次登錄之前已經Assembly.Load()過一次dll,第二次返回登陸再次load dll到內存中,Invoke執行方法的時候,異常了,有些方法執行了,有些未執行,於是查資料,看到些老資料說Assembly.Load重複加載同名dll不會有問題,而卻現在有異常了。斷點看到重複加載的dll重複的堆在了AppDomain.CurrentDomain.GetAssemblies()裏面,多分dll引發了方法調用異常,Assembly不會自動在重複加載同一份dll的時候先清理舊的再加載新的,二十堆疊加載到內存中去,Assembly也沒提供Unload方法給開發者主動卸載,微軟着實有點大坑。於是只能做判定內存中已經加載了的dll,跳過不加載了,做了過濾之後,返回登陸在執行邏輯,完全正常。

 

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