---------------------- Windows Phone 7手机开发、.Net培训、 期待与您交流!----------------------
依据程序写法,程序至少要有一个进程,因为CPU通过进程同程序打交道
一个进程至少有一个线程
同一个进程中的多个线程之间可以“并发执行”
![](https://img-my.csdn.net/uploads/201210/06/1349505406_8416.png)
线程是程序中的一个执行流,每个线程都有自己的专有存储器(栈指针、程序计数器等),但是代码区是共享的,及不同的线程可以执行相同的函数。
多线程是指程序中包含多个执行流,即在一个程序中可以同事运行多个不同的线程来执行不同的任务(代码),也就是说单个程序能够创建多个并行执行的点成来完成各自的任务。
![](https://img-my.csdn.net/uploads/201210/06/1349505417_4326.png)
1)请人做事==启动一个线程
2)让他做什么 == 通过委托调用
微软创建线程类的时候不知道你要进行什么操作,
所以需要你自己把要做的事传给线程(要做的事写成方法,然后通过委托把方法传进线程)
为什么用多线程
CPU通过调用进程来执行代码,代码执行时被加载到线程(thread)上。
在一个进程(Process)里面,通过把代码加载到一个线程(thread)来执行。
应用程序启动时候,CPU会自动创建一个进程和一个线程,这个线程是UI线程——也是默认线程——也是主线程。
1)利用多处理核心CPU的处理能力
2)让一个程序“同时”做多件事情
3)提高程序执行效率
4)后台运行程序,提供程序的运行效率,防止程序主界面失去响应(唯一的线程干其他事情去了,导致对你的交互没反应)
使用多线程过程
0)引入System.Threading空间
0)编写要执行的方法 == 做什么 == 定义CountTimes方法
1)Thread firstThread = new Thread(CountTimes); //请人做CountTimes这个事情,括号内是把方法赋给下面两个委托之一,firstThread调用委托
2)firstThread.Start();//标记线程可执行,具体时间有CPU确定
Question:Thread类线程能接受
ParameterizedThreadStart
和
ThreadStart
无返回值的委托。如果调用的方法有返回值怎么办。
前台线程和后台线程
firstThread.IsBackgroud=true; //新线程设置为后台进程,这样如果(所有)前台进程关闭后,后台进程即使没执行完,也会关闭.
firstThread.Start();
----------------------Windows Phone 7手机开发、.Net培训、 期待与您交流!----------------------