一、进程与线程
(一)进程
简单的说,一个程序就是一个进程
(二)线程
线程是程序中的一个执行流。每个线程都有自己专有的寄存器(储存栈指针、程序计数器等),但代码区是共享的,即不同的线程可以执行同样的函数
(三)多线程
多线程是指程序中包含多个执行流,即在一个程序中可以同时运行多个不同的线程来执行不同的任务(代码),也就是说允许单个程序创建多个并行执行的线程来完成各自的任务
1.CPU通过线程执行代码,如同商店通过工人来做店里要做的事情(如打扫、卖东西)
2.同一个进程中的多个线程可以“并发”执行。所谓“并发”执行,并不是真正的同时执行
3.一个CPU在同一时刻只能执行一个线程。如果只有一个CPU,则CPU在多个线程之间来回切换
4.线程中包含寄存器,存储CPU执行到这个线程的哪一步。这样CPU在多个线程之间来回切换的时候就知道该从哪里继续
(四)进程与线程之间的关系
一个进程至少包括一个线程,即默认线程(主线程、UI线程)
(五)net中如何实现多线程
1.线程就是一个工人(帮工)。所以要产生一个线程,就必须先为该线程写一个方法,这个方法中的代码就是该线程运行所要执行的代码。(找个人来坐一件事情)
2.线程启动时,通过委托调用该方法。线程启动时,调用传过来的委托,委托就会执行相应的方法,实现线程执行方法
3.线程运行完所要执行的代码后自动停掉。
(六)前台线程和后台线程
1.前台线程:只有所有的前台线程都关闭才能完成程序关闭
2.后台线程:只要所有的前台线程都关闭则后台线程自动结束。
threadFirst.Background = true; //把线程设置为后台线程
二、Thread类
Thread 实例名 = new Thread(方法名);
执行带参数的方法和带多个参数的方法,则将方法的传入参数类型设为object
(一)执行带参数的方法
void ShowName(object name)
{
MessageBox.Show(name.ToString());
}
private void btnMultipleThreadWithParameter_Click(object sender, EventArgs e)
{
Thread threadShowName = new Thread(ShowName);
threadShowName.IsBackground = true;
threadShowName.Start("刘德华");
}
(二)执行带多个参数的方法
void ShowManyName(object names)
{
List<string> nameList = names as List<string>;
foreach(string name in nameList)
{
MessageBox.Show(name);
}
}
private void btnMultipleThreadWithManyParameters_Click(object sender, EventArgs e)
{
Thread threadShowName = new Thread(ShowManyName);
threadShowName.IsBackground = true;
threadShowName.Start(new List<string>() { "刘德华","周杰伦","陈奕迅"});
}
(三)Start()方法
并不表示线程开始执行,而是表示该线程可以被CPU执行
(四)Abort()方法
在调用此方法的线程上引发ThreadAbortException,以终止线程。
---------------------- Windows Phone 7手机开发、 .Net培训、期待与您交流! ---------------------- 详细请查看: http://net.itheima.com/