进程、应用程序域

(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.CurrentDomain
2                 .CreateInstance("Cxz.UNet.OtherKnowledge.DelegateAndEvent",
3                 "Cxz.UNet.OtherKnowledge.DelegateAndEvent.Observer.Heater").Unwrap() as Heater;
4 var alarm = AppDomain.CurrentDomain
5                 .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();

 

  

posted @ 2012-11-30 15:45  Thinker_cxz  阅读(198)  评论(0编辑  收藏  举报