使用Thread类可以创建和控制线程

1.创建线程

  1. static void Main(string[] args)  
  2. {  
  3.     /* Thread类 
  4.      * 创建控制线程 
  5.      * 其构造函数接受ThreadStart和ParameterizedThreadStart类型的委托参数 
  6.      */  
  7.     Thread t1 = new Thread(ThreadMain);  
  8.     t1.Name = "66";  
  9.     //创建了线程后,可以用Start()方法启动线程啦^-^   
  10.     t1.Start();  
  11.   
  12.     Console.WriteLine("主线程");  
  13.   
  14.     /* 使用λ表达式创建线程更简洁 */  
  15.     Thread t2 = new Thread(() => Console.WriteLine("t2线程"));  
  16.     t2.Start();  
  17.   
  18.     //这个就更简洁 ≡(▔﹏▔)≡   
  19.     new Thread(() => Console.WriteLine("t3线程")).Start();  
  20.   
  21.     Console.ReadLine();  
  22.   
  23.     /* 得到结果不能保证哪个结果先输出 
  24.      * 线程由操作系统调度,每次哪个线程在前不同的 
  25.      */  
  26. }  
  27.   
  28. //线程中通过委托ThreadStart调用的方法   
  29. static void ThreadMain()  
  30. {  
  31.     Console.WriteLine("t1线程,线程名:" + Thread.CurrentThread.Name + ",该线程托管ID:" + Thread.CurrentThread.ManagedThreadId);  
  32. }  

 

 

2.给线程传送数据

方法一:使用带ParameterizedThreadStart委托参数的Thread构造函数,给线程传送数据

  1. class Program  
  2. {  
  3.     static void Main(string[] args)  
  4.     {  
  5.         /* 使用带ParameterizedThreadStart委托参数的Thread构造函数,给线程传送数据 */  
  6.   
  7.         //初始化给线程传送的数据   
  8.         Data d = new Data();  
  9.         d.Message = "66";  
  10.   
  11.         Thread t1 = new Thread(ThreadMainWithParameters);  
  12.         //使用了ParameterizedThreadStart委托,线程入口必有一object类型参数   
  13.         t1.Start(d);  
  14.   
  15.         Console.ReadLine();  
  16.     }  
  17.   
  18.     //线程中通过委托ParameterizedThreadStart调用的方法   
  19.     static void ThreadMainWithParameters(object o)  
  20.     {  
  21.         Data d = (Data)o;  
  22.         Console.WriteLine("线程t1,传入参数:" + d.Message);  
  23.     }  
  24. }  
  25.   
  26. //给线程传送数据,需要某个存储数据的类或结构   
  27. public struct Data  
  28. {  
  29.     public string Message;  
  30. }  

 

方法二:创建一个定制类,把线程的方法定义为实例方法,给线程传送数据

  1. //定制类   
  2. public class MyThread  
  3. {  
  4.     private string data;  
  5.   
  6.     public MyThread(string data)  
  7.     {  
  8.         this.data = data;  
  9.     }  
  10.   
  11.     //线程中通过委托ThreadStart调用的定制类中的实例方法   
  12.     public void ThreadMain()  
  13.     {  
  14.         Console.WriteLine("线程t1,传入参数:" + data);  
  15.     }  
  16. }  
  17.   
  18. class Program  
  19. {  
  20.     static void Main(string[] args)  
  21.     {  
  22.         /* 创建一个定制类,把线程的方法定义为实例方法,给线程传送数据 */  
  23.   
  24.         MyThread obj = new MyThread("66");  
  25.   
  26.         Thread t1 = new Thread(obj.ThreadMain);  
  27.         t1.Start();  
  28.   
  29.         Console.ReadLine();  
  30.     }  
  31. }  

 

posted @ 2013-08-08 13:38  星火卓越  阅读(2763)  评论(0编辑  收藏  举报