1. Invoker

Any c# project

Create a new application domain

Create a proxy within the domain

Unload the application domain

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;

2. Proxy

Implement MarshalByRefObject

Use reflection to load dll

Dll is unloaded when the parent application domain unloading

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. LeetCode Reorder List
  2. $(document).click() 在苹果手机上不能正常运行
  3. owin
  4. 当powershell遇上mysql引发的血案
  5. java学习第八天
  6. mysql InnoDB 索引小记
  7. Linux软件安装,RPM与YUM
  8. 进程间通讯之mmap文件共享
  9. tcp协议栈
  10. 对vue生命周期/钩子函数的理解
  11. struts2--Action
  12. 干货,一文带你超详细了解Session的原理及应用
  13. DropDownList切换选择,服务器控件Repeater未更新
  14. json树递归js查询json父子节点
  15. ES6的新特性(2)——let 与 const 增强变量声明
  16. 使用Unity5.1进行VR开发的配置(最新的未必是最好的!!!)
  17. Oracle WebLogic Server 12c 新特性
  18. Android Google Maps 开始
  19. Oracle基础 存储过程和事务
  20. keepalived+redis 高可用redis主从解决方案

热门文章

  1. rt-thread模糊到清晰系列: irq.c
  2. windows下dapr的代码调试--非docker部署
  3. TCP/IP协议(6): DHCP(Dynamic Host Configuration Protocol) 协议 —— 网络地址的分配方式
  4. 达标式减量策略又一例证(STRASS研究)
  5. VS Ctrl+D 快速复制上一行
  6. JS弹窗遮罩 POP
  7. Solon v2.2.1 发布。向 Graalvm Native 友好靠近
  8. Spark Streaming实时计算
  9. vscode注释插件
  10. C++程序设计实验二 数组、指针与C++标准库