(1)、进程(Process)
进程Process存在于命名空间System.Diagnostics中,专门用于管理进程的开始、结束,访问进程中的模块,获取进程中的线程,设定进程的优先级别等。
Process的属性及方法,请参考csdn。
1、进程的简单运用
a、使用Start和kill可以建立和销毁进程
b、使用GetProcess方法可以获取本地计算机上正在运行的每一个进程列表。
// 根据进程id按升序对进程排序,并取所有进程的前5个var processList = Process.GetProcesses().OrderBy(x => x.Id).Take(5);
c、如果知道进程的Id或者进程的名称,则可以通过函数GetProcessById或GetProcessByName查找的你要的进程信息。其中在使用GetProcessById查找进程时,如果找不到则系统会抛出ArgumentException异常。
d、通过Process类中的Modules属性,可以获取进程中的多个模块。
(2)、应用程序域
使用.NET建立的可执行程序*.exe,并没有直接承载到进程当中,而是承载到应用程序域(AppDomain)当中。它比进程占用的资源要少。其中一个进程可以包含多个应用程序域,而一个应用程序域,则可以承载多个可执行程序(*.exe)或多个程序集(.dll)。
1、应用
a、在AppDomain中加载程序集,在加载时,涉及到的函数有CreateDomain建立一个新的应用程序域,load加载程序集,GetAssemblies获取该应用程序域中所有程序集。加载可执行程序时,用ExecuteAssembly方法。
b、卸载AppDomain,可以通过函数Unload实现。
c、在AppDomain中建立程序集中指定的类对象
1 var heater = AppDomain.CurrentDomain2 .CreateInstance("Cxz.UNet.OtherKnowledge.DelegateAndEvent",3 "Cxz.UNet.OtherKnowledge.DelegateAndEvent.Observer.Heater").Unwrap() as Heater;4 var alarm = AppDomain.CurrentDomain5 .CreateInstance("Cxz.UNet.OtherKnowledge.DelegateAndEvent",6 "Cxz.UNet.OtherKnowledge.DelegateAndEvent.Observer.Alarm").Unwrap() as Alarm;7 heater.Boiled += alarm.MakeAlert;8 heater.Boiled += Display.ShowLog;9 heater.BoilWater();