多线程
一个进程至少有一个线程;同一个进程中的多个线程之间可以"并发"执行!
1 /// <summary> 2 /// 非多线程方法 3 /// </summary> 4 /// <param name="sender"></param> 5 /// <param name="e"></param> 6 private void btnCount_Click(object sender, EventArgs e) 7 { 8 Count(); 9 } 10 11 public static void Count() 12 { 13 //去的计算前的时间 14 DateTime beginTime = DateTime.Now; 15 for (int i = 0; i < 999999999; i++) { } 16 17 //去的计算后的时间 18 DateTime endTime = DateTime.Now; 19 20 //耗时 用Subtract方法,返回值类型为TimeSpan 21 TimeSpan time = endTime.Subtract(beginTime); 22 MessageBox.Show("计算完毕,耗时:"+time.TotalMilliseconds.ToString());//转化为毫秒形式 23 }
线程肯定也是要执行一段代码的。所以要产生一个线程,必须先为该线程写一个方法,这个方法中的代码就是该线程运行所要执行的代码。(找个人来做一件事情)
线程启动时,通过委托调用该方法------------ (线程启动时,调用传过来的委托,委托就会执行相应的方法,实现线程执行方法)。
产生一个线程的4步骤:
- 编写产生线程所要执行的方法-----Count()
- 引用System.Threading命名空间----------using System.Threading;
- 实例化Thread类,并传入一个指向线程所要运行方法的委托。(这时候这个线程已经产生,但是还没有运行)
- 调用Thread实例的Start方法,标记该线程可以被CPU执行了,但具体执行时间由CPU决定。
1 public static void Count() 2 { 3 //去的计算前的时间 4 DateTime beginTime = DateTime.Now; 5 for (int i = 0; i < 999999999; i++) { } 6 7 //去的计算后的时间 8 DateTime endTime = DateTime.Now; 9 10 //耗时 用Subtract方法,返回值类型为TimeSpan 11 TimeSpan time = endTime.Subtract(beginTime); 12 MessageBox.Show("计算完毕,耗时:"+time.TotalMilliseconds.ToString());//将时间转化为毫秒表达形式 13 } 14 15 /// <summary> 16 /// 多线程方法 17 /// </summary> 18 /// <param name="sender"></param> 19 /// <param name="e"></param> 20 private void btnCount2_Click(object sender, EventArgs e) 21 { 22 //引入命名空间using System.Threading; 23 //ThreadStart是一个delegate委托,指向方法Count() 24 Thread thread = new Thread(new ThreadStart(Count)); 25 26 //调用Thread实例的Start方法,标记该线程可以被CPU执行了,但具体执行时间由CPU决定。 27 thread.Start(); 28 }
Thread类的一些重要成员(*)
- Start()启动线程
- Abort()终止线程
- Sleep() 静态方法,可以使当前线程停止一段时间运行
- Name线程名
- Thread.CurrentThread获得当前的线程引用
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。