不可不知的C#基础 3. 线程浅析
线程可以使你的项目运行得更加的流畅.
什么是线程呢?
线程(thread)是程序执行流的最小单元, 是程序中一个单一的顺序控制流程. 每个程序最少有一个线程, 那就是程序本身.
在C#中, 你可以使用 System.Threading 提供的类,接口和方法实现线程的所有操作.
单线程操作
想象着你走进快餐店, 大叫一声"来碗兰州拉面", 然后就坐在饭桌上等. 当厨师听到你的要求时,他就开始做兰州拉面了. 理论上讲, 当你叫了以后, 厨师就已经收到了命令.
用代码可以这样表达:
static void Main(string[] args) { string name = "兰州拉面"; Console.WriteLine("来碗" + name); PlaceOrder(name); Console.WriteLine("坐在饭桌上...."); Console.Read(); } static void PlaceOrder(string name) { Console.WriteLine("开始制作" + name); }
运行程序, 你会发现输出结果是:
从显示的结果来看, 这个厨师的动作非常的快, 他一听到命令, 马上就开始了. 为了让这个程序的模拟比较真实, 我们可以想象"我的动作"是一个线程, 而"厨师做拉面"是一个线程.
如果我们运用线程来实现就有点意思了:
static void PlaceOrder(string name) { Thread thread1 = new Thread(new ThreadStart(Cooking)); thread1.Start(); } static void Cooking() { Console.Write("开始制作"); }
运行程序, 你会发现输出结果是:
这是表示虽然厨师听到你的声音了,但是你坐在饭桌上的动作是在他开始做拉面之前. -- 更加的合情合理, 是吗?
我们还可以引入参数:
static void PlaceOrder(string name) { Thread thread1 = new Thread(t => Cooking(name)); thread1.Start(); } static void Cooking(string name) { Console.WriteLine("开始制作" + name); }
注意上面的参数的传递方法只用于.net 3.5/4