进程(process):是windows系统中的一个基本概念,它包含着一个运行程序所需要的资源,整个应用程序隔离的空间。
应用程序域:它提供安全而通用的处理单元,公共语言运行库可以使用它来提供应用程序之间的隔离。所以的c#代码都是跑在应用程序域
线程:是windows任务调度的最小单位,每个线程都有自己的专有的寄存器,但代码区都是共享,不同的线程可以执行同样的代码
一个进程可以有多个应用程序域,一个应用程序域可以执行多个线程,但是同一时间只能在一个应用程序域中执行,线程可以穿透应用程序域,线程属于进程。
===================进程================
//启动进程
Processprcess=Process.Start("iexploer.exe","http://www.baidu.com");
var prcesses=Process.GetProesses();
foreache(varitem in prcesses)
{
console.writeline(item.ProcessName);
}
//获取当前进程
Processp=Process.GetCurrentProcess();
Thread.sleep(1000);
P.kill();
=======================应用程序域==================
//启动应用程序域
if(AppDomain.CurrentDomain.IsDefaultAppDomain())
{
console.writeLine("这是主应");
}
//自己写一个AppDomain
AppDomainSetupappDomainSetup=new AppDomainSetup();
appDomainSetup.Loaderoptimization=LoaderOptimization.SingleDomain;
AppDomain appDomain=AppDomain.CreatDomain("应用程序名称.exe",null,appDomainSetup);
appDomain.ExecuteAddembly("应用程序名称.exe")
========================线程===============================
CLR线程 操作系统线程
Main{//获取当前线程
Threadmainthread=Thread.CurrentThread;
console.writeLine("主线程Id:{0}",mainthread.MangeThreadId);
//创建一个线程
Threadthread=new Thread(DoWork);
//设置线程名称
thread.Name="shit";
//设置后台线程:只要所有的前台线程结束,后台线程自动结束
/ 前台线程:只有所有的前台线程都关闭才能完成程序关闭
thread.IsBackground=true;
//启动一个线程(不是真正的启动,告诉cpu当前线程可以执行)
thread.Start(//取决DoWork方法是否含有参数);
//终止一个线程
thread.Abort();
staticvoid DoWork()
{
console.writeLine("子线程:{0}",Thread.CurrentTHrea.MangedThreadId);
}