最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

c#動態(tài)加載卸載DLL的方法

 更新時間:2013年11月07日 15:27:13   作者:  
這篇文章介紹了c#動態(tài)加載卸載DLL的方法,有需要的朋友可以參考一下

c#中通過反射可以方便的動態(tài)加載dll程序集,但是如果你需要對dll進行更新,卻發(fā)現(xiàn).net類庫沒有提供卸載dll程序集的方法。在.net 中,加入了應(yīng)用程序域的概念,應(yīng)用程序域是可以卸載的。也就是說,如果需要對動態(tài)加載的dll程序集進行更新,可以通過以下方法解決:

新建一個應(yīng)用程序域,在該應(yīng)用程序域中動態(tài)加載DLL,然后可以卸載掉該應(yīng)用程序域。該應(yīng)用程序域被卸載的時候,相關(guān)資源也會被回收。

要想這樣實現(xiàn),就要讓你程序的currentDomain和新建的newDomain之間進行通信,穿過應(yīng)用程序域的邊界。從網(wǎng)上找到了某大牛的解決方法,抄下來留給自己看吧:

復(fù)制代碼 代碼如下:

using System;
using System.Collections.Generic;
using System.Text;
using System.Threading;
using System.Reflection;
namespace UnloadDll
{
    class Program
    {
        static void Main(string[] args)
        {
            string callingDomainName = AppDomain.CurrentDomain.FriendlyName;//Thread.GetDomain().FriendlyName;
            Console.WriteLine(callingDomainName);
            AppDomain ad = AppDomain.CreateDomain("DLL Unload test");
            ProxyObject obj = (ProxyObject)ad.CreateInstanceFromAndUnwrap(@"UnloadDll.exe", "UnloadDll.ProxyObject");
            obj.LoadAssembly();
            obj.Invoke("TestDll.Class1", "Test", "It's a test");
            AppDomain.Unload(ad);
            obj = null;
            Console.ReadLine();
        }
    }
    class ProxyObject : MarshalByRefObject
    {
        Assembly assembly = null;
        public void LoadAssembly()
        {
            assembly = Assembly.LoadFile(@"TestDLL.dll");           
        }
        public bool Invoke(string fullClassName, string methodName, params Object[] args)
        {
            if(assembly == null)
                return false;
            Type tp = assembly.GetType(fullClassName);
            if (tp == null)
                return false;
            MethodInfo method = tp.GetMethod(methodName);
            if (method == null)
                return false;
            Object obj = Activator.CreateInstance(tp);
            method.Invoke(obj, args);
            return true;           
        }
    }
}

注意:

1. 要想讓一個對象能夠穿過AppDomain邊界,必須要繼承MarshalByRefObject類,否則無法被其他AppDomain使用。

2. 每個線程都有一個默認的AppDomain,可以通過Thread.GetDomain()來得到

相關(guān)文章

  • Unity實現(xiàn)簡單的多人聊天工具

    Unity實現(xiàn)簡單的多人聊天工具

    這篇文章主要為大家詳細介紹了Unity實現(xiàn)簡單的多人聊天工具,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • C# 建造者模式(Builder Pattern)詳細講解

    C# 建造者模式(Builder Pattern)詳細講解

    建造者模式是一種創(chuàng)建型設(shè)計模式,通過將復(fù)雜對象的構(gòu)建過程與其表示分離,使得同樣的構(gòu)建過程可以創(chuàng)建不同的表示,它適用于構(gòu)建過程復(fù)雜且涉及多個步驟的場景,本文介紹C# 建造者模式(Builder Pattern)詳細講解,感興趣的朋友一起看看吧
    2025-03-03
  • C#操作串口通信協(xié)議Modbus的常用方法介紹

    C#操作串口通信協(xié)議Modbus的常用方法介紹

    這篇文章介紹了C#操作串口通信協(xié)議Modbus的常用方法,文中通過示例代碼介紹的非常詳細。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-05-05
  • C# SQLite數(shù)據(jù)庫入門使用說明

    C# SQLite數(shù)據(jù)庫入門使用說明

    這篇文章主要給大家介紹了關(guān)于C#中SQLite數(shù)據(jù)庫入門使用的相關(guān)資料,文中通過圖文以及示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-11-11
  • 支持windows與linux的php計劃任務(wù)的實現(xiàn)方法

    支持windows與linux的php計劃任務(wù)的實現(xiàn)方法

    這篇文章主要介紹了支持windows與linux的php計劃任務(wù)的實現(xiàn)方法,較為詳細的講述了php計劃任務(wù)中涉及到的php程序?qū)崿F(xiàn)方法、Windows計劃任務(wù)實現(xiàn)方法等,需要的朋友可以參考下
    2014-11-11
  • C#使用smtp發(fā)送帶附件的郵件實現(xiàn)方法

    C#使用smtp發(fā)送帶附件的郵件實現(xiàn)方法

    這篇文章主要介紹了C#使用smtp發(fā)送帶附件的郵件實現(xiàn)方法,可直接將string類型結(jié)果保存為附件,實例中備有相應(yīng)的注釋便于理解,需要的朋友可以參考下
    2014-11-11
  • 淺談c#開發(fā)者應(yīng)該了解的15個特性

    淺談c#開發(fā)者應(yīng)該了解的15個特性

    本文列舉了15個值得了解的C#特性,旨在讓.NET開發(fā)人員更好的使用C#語言進行開發(fā)工作。
    2021-05-05
  • C#操作session的類實例

    C#操作session的類實例

    這篇文章主要介紹了C#操作session的類,實例分析了C#針對session的添加、讀取及刪除等技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-03-03
  • 解決WPF繪制矢量圖形模糊的問題

    解決WPF繪制矢量圖形模糊的問題

    這篇文章介紹了WPF繪制矢量圖形模糊問題的解決方法,文中通過示例代碼介紹的非常詳細。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06
  • C#在驗證文件共享模式下實現(xiàn)多線程文件寫入

    C#在驗證文件共享模式下實現(xiàn)多線程文件寫入

    這篇文章主要為大家詳細介紹了C#在驗證文件共享模式下實現(xiàn)多線程文件寫入的相關(guān)知識,文中的示例代碼講解詳細,感興趣的小伙伴可以了解下
    2024-01-01

最新評論

拜泉县| 辽阳县| 商河县| 龙陵县| 江安县| 安徽省| 合作市| 永修县| 体育| 荆门市| 故城县| 娄底市| 阿拉善盟| 玛多县| 平江县| 临夏县| 姜堰市| 晴隆县| 出国| 长汀县| 惠州市| 米林县| 阿鲁科尔沁旗| 奎屯市| 抚远县| 汕头市| 沙坪坝区| 桓仁| 凯里市| 安阳县| 江陵县| 夏邑县| 汝州市| 靖西县| 平南县| 社旗县| 禄劝| 景宁| 兴安县| 安福县| 蛟河市|