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 }

 

posted @ 2015-03-12 13:47  felove  阅读(119)  评论(0)    收藏  举报