C#多线程
转自:http://www.cnblogs.com/caokai520/p/4286320.html
实例一
1 using System; 2 using System.Threading; 3 4 namespace ThreadTest 5 { 6 class Program 7 { 8 static void Main(string[] args) 9 { 10 OnThread(); 11 Thread.Sleep(1000); 12 } 13 14 static void OnThread() 15 { 16 Thread threadA = new Thread(ThreadMethod); 17 threadA.IsBackground = true; 18 threadA.Start(); 19 20 object threadParameter = "P"; 21 Thread threadB = new Thread(new ParameterizedThreadStart(ThreadMethodParameter)); 22 threadB.IsBackground = true; 23 threadB.Start(threadParameter); 24 } 25 26 static void ThreadMethod() 27 { 28 for (int i = 0; i < 10; ++i) 29 { 30 Console.WriteLine("A"); 31 } 32 } 33 34 static void ThreadMethodParameter(object param) 35 { 36 for (int i = 0; i < 10; ++i) 37 { 38 Console.WriteLine("B" + param); 39 } 40 } 41 } 42 }
实例二
1 using System; 2 using System.Diagnostics; 3 using System.Threading; 4 5 namespace ThreadTest2 6 { 7 class ThreadTest2 8 { 9 static void Main(string[] args) 10 { 11 OnThread(); 12 } 13 14 static void OnThread() 15 { 16 var watch = Stopwatch.StartNew(); 17 Thread t1 = new Thread(() => 18 { 19 Thread.Sleep(4000); 20 Console.WriteLine("t1 is ending..."); 21 }); 22 t1.Start(); 23 t1.Join(); 24 Console.WriteLine("t1.Join() is returned"); 25 26 Thread t2 = new Thread(() => 27 { 28 Thread.Sleep(1000); 29 Console.WriteLine("t2 is ending..."); 30 }); 31 t2.Start(); 32 //t2.Join(); 33 Console.WriteLine("t2.Join() is returned"); 34 35 Console.WriteLine("总结:Join()调用会阻塞其他线程,时间:" + watch.ElapsedMilliseconds); 36 } 37 } 38 }
实例三
1 using System; 2 using System.Threading; 3 4 namespace Thread3 5 { 6 class Program 7 { 8 static void Main(string[] args) 9 { 10 Thread thread; 11 thread = new Thread(QueryTask); 12 thread.IsBackground = true; 13 thread.Start(); 14 15 Console.Read(); 16 } 17 18 /// <summary> 19 /// 查询任务 20 /// </summary> 21 static void QueryTask() 22 { 23 TaskModel todo_TaskModel; 24 while (true) 25 { 26 int count = new Random().Next(1, 10); 27 for (int i = 0; i < count; ++i) 28 { 29 todo_TaskModel = new TaskModel() { TaskID = i, ITime = DateTime.Now }; 30 ThreadPool.QueueUserWorkItem(InvokeThreadModel, todo_TaskModel); 31 } 32 Console.WriteLine("/////////////////////////////////////////////////////"); 33 Thread.Sleep(5000); 34 } 35 } 36 37 /// <summary> 38 /// 完成计划任务 39 /// </summary> 40 /// <param name="taskModel"></param> 41 static void InvokeThreadModel(object taskModel) 42 { 43 TaskModel model = (TaskModel)taskModel; 44 Console.WriteLine("执行任务ID:{0}......执行完成.{1}", model.TaskID, model.ITime); 45 } 46 47 struct TaskModel 48 { 49 public int TaskID { get; set; } 50 public DateTime ITime { get; set; } 51 } 52 } 53 }
浙公网安备 33010602011771号