进程 > 应用程序域(AppDomain) > 线程
一个进程可以有多个应用程序域;一个应用程序域可以执行多个线程,但同一时间线程只能在一个应用程序域中执行。
创建一个进程:
启动一个chrome浏览器,打开黑马的首页:
static void Main(string[] args)
{
//启动ie
Process process = Process.Start("chrome.exe","http://edu.csdn.net");
}
干掉一个进程:
启动几个ie浏览器,执行以下代码,会关闭所有的ie浏览器
static void Main(string[] args)
{
Process[] process = Process.GetProcessesByName("iexplore"); //获取ieplore的进程关联
foreach (Process item in process)
{
item.Kill(); //立即停止关联的进程
}
}
启动一个不带参数的线程:
线程 Thread thread = new Thread(ThreadStart start) 参数为ThreadStart
public delegate void ThreadStart(); 而ThreadStart是一个无参的委托,所以上面的参数可以把一个方法传递过去
new Thread(DoWord) ...
终止一个线程
thread.Abort();
static void Main(string[] args)
{
Thread mainThread = Thread.CurrentThread; //这是主线程
Thread thread = new Thread(new Thread(DoWork)); //启动一个子线程,参数为ThreadStart
thread.Start();
int num = 0;
while (num < 5)
{
Console.WriteLine("这是主线程,ID:{0}", mainThread.ManagedThreadId);
num++;
Thread.Sleep(1000);
}
}
static void DoWork() //子线程执行的方法
{
while (true)
{
Console.WriteLine("这是子线程{0}在干活", Thread.CurrentThread.ManagedThreadId);
Thread.Sleep(1000);
}
}
输出:
启动一个带参数的线程:
线程 Thread thread = new Thread(ParameterizedThreadStart start) 参数为ParameterizedThreadStart
public delegate void ParameterizedThreadStart(object obj); 我们要把这样一个委托作为参数传递
static void Main(string[] args)
{
//ParameterizedThreadStart parStart = new ParameterizedThreadStart(DoWork);
Thread thread = new Thread(new ParameterizedThreadStart(DoWork)); //启动一个子线程,参数为ThreadStart
thread.Start(10);
}
static void DoWork(object a) //子线程执行的方法
{
while (true)
{
Console.WriteLine("这是子线程{0}在干活,值:{1}", Thread.CurrentThread.ManagedThreadId, a);
Thread.Sleep(1000);
}
}