1 System.Diagnostics namespace下的Process相关的类
Process - 提供远程和本地process的入口,并支持开启/关闭process
ProcessModule - 表示一个已经加载到process的module(exe或者dll),支持任何com based/.net/传统c的文件
ProcessModuleCollection - 强类型的processModule的collection
ProcessStartInfo - 提供用于process.start的参数
ProcessThread - 进程中的一个线程,只是返回已有线程而不会新建线程
ProcessThreadCollection 强类型processThread的collection
2 AppDomain
一个Process对应多个AppDomain,一个AppDomain对应一个可执行程序。
AppDomain的优点
1 是中间层概念,所以加强了系统平台独立性
2 AppDomain相对与Process,是轻量级的。使CLR容易加载和卸载
3 AppDomain之间是完全独立的,一个Process中,如果一个AppDomain失败,不影响其他的AppDomain
3 创建AppDomain
创建新的AppDomain后,只有mscorlib.dll会被加载进该Domain。 如
public class ConsoleApplication1
{
public static void main(string[] args)
{
AppDomain ad = AppDomain.CreateDomain("ConsoleApplication2");
ad.Load("ClassLibrary1")
}
}
上例中process ConsoleApplication1会有2个AppDomain,一个是Default, 包含mscorlib.dll,system.windows.form.dll,consoleapplication1.exe等,另一个为ConsoleApplication2 ,则只有mscorlib.dll和classlibrary1.dll
3 属性[Synchronization]和类ContextBoundObject
process中有多个appdomain
appdomain中有多个context.
一般对象实例话的时候,如果调用Thread.CurrentContext.ContextId,得到返回值为0,即默认context.
但是如果使用了[synchronization]和contextboundobject,则对象实例话后,得到返回值为一个唯一值,如1,2递增。
如果使用了synchronization和contextboundobject声明的对象,表明该类是线程安全的,不支持垃圾回收。