AppDomain
创建应用程序域 : class AppDomain1 { public static void Main() { Console.WriteLine("Creating new AppDomain."); //创建应用程序域 AppDomain domain = AppDomain.CreateDomain("MyDomain"); //显示当前应用程序域的友好名称 Console.WriteLine("Host domain: " + AppDomain.CurrentDomain.FriendlyName); //显示新建应用程序域的友好名称 Console.WriteLine("child domain: " + domain.FriendlyName); } }
卸载应用程序域: class AppDomain2 { public static void Main() { Console.WriteLine("Creating new AppDomain."); //创建应用程序域 AppDomain domain = AppDomain.CreateDomain("MyDomain", null); Console.WriteLine("Host domain: " + AppDomain.CurrentDomain.FriendlyName); Console.WriteLine("child domain: " + domain.FriendlyName); // 卸载应用程序域 AppDomain.Unload(domain); Console.WriteLine("Host domain: " + AppDomain.CurrentDomain.FriendlyName); //下面这行代码会产生异常,因为domain对象被卸载了 Console.WriteLine("child domain: " + domain.FriendlyName); } }
将程序集加载到应用程序域中 class AppDomain3 { public static void Main(string[] args) { //取得当前应用程序域 AppDomain ad = AppDomain.CurrentDomain; //加载ClassLibrary831应用程序集,mydll.dll放到当前目录下 Assembly a = ad.Load("ClassLibrary831"); //取得应用程序集中的NewClass类型 Type t = a.GetType("ClassLibrary831.NewClass"); //创建NewClass类型的实例 object o = Activator.CreateInstance(t); //给对象的属性赋值 PropertyInfo p1 = t.GetProperty("MyName"); PropertyInfo p2 = t.GetProperty("MyInfo"); p1.SetValue(o, "中国", null); p2.SetValue(o,"China",null); //调用对象的show方法 MethodInfo mi = t.GetMethod("show"); mi.Invoke(o, null); } }
创建一个新的应用程序域,并加载执行程序集 class Test { static void Main(string[] args) { AppDomain currentDomain = AppDomain.CurrentDomain; Console.WriteLine(currentDomain.FriendlyName); //创建新的应用程序域 AppDomain secondDomain = AppDomain.CreateDomain("New AppDomain"); //在新的应用程序域中加载执行AssemblyA.exe程序集 secondDomain.ExecuteAssembly("AssemblyA.exe"); } }
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。