多线程

一个进程至少有一个线程;同一个进程中的多个线程之间可以"并发"执行!

 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步骤:

  1. 编写产生线程所要执行的方法-----Count()
  2. 引用System.Threading命名空间----------using System.Threading;
  3. 实例化Thread类,并传入一个指向线程所要运行方法的委托。(这时候这个线程已经产生,但是还没有运行)
  4. 调用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类的一些重要成员(*)

  1. Start()启动线程
  2. Abort()终止线程
  3. Sleep() 静态方法,可以使当前线程停止一段时间运行
  4. Name线程名
  5. Thread.CurrentThread获得当前的线程引用

 

多线程,古老的榕树,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。