您的位置:首页 > 其它

以ThreadStart方式实现多线程

2012-09-05 08:35 387 查看
使用ThreadStart委托这里先以一个例子体现一下多线程带来的好处,首先在Message类中建立一个方法ShowMessage(),里面显示了当前运行线程的Id,并使用Thread.Sleep(int ) 方法模拟部分工作。在main()中通过ThreadStart委托绑定Message对象的ShowMessage()方法,然后通过Thread.Start()执行异步方法。
1       public class Message
2       {
3           public void ShowMessage()
4           {
5               string message = string.Format("Async threadId is :{0}",
6                                               Thread.CurrentThread.ManagedThreadId);
7               Console.WriteLine(message);
8
9               for (int n = 0; n < 10; n++)
10               {
11                   Thread.Sleep(300);
12                   Console.WriteLine("The number is:" + n.ToString());
13               }
14           }
15       }
16
17       class Program
18       {
19           static void Main(string[] args)
20           {
21               Console.WriteLine("Main threadId is:"+
22                                 Thread.CurrentThread.ManagedThreadId);
23               Message message=new Message();
24               Thread thread = new Thread(new ThreadStart(message.ShowMessage));
25               thread.Start();
26               Console.WriteLine("Do something ..........!");
27               Console.WriteLine("Main thread working is complete!");
28
29           }
30       }
使用ParameterizedThreadStart委托ParameterizedThreadStart委托与ThreadStart委托非常相似,但ParameterizedThreadStart委托是面向带参数方法的。注意ParameterizedThreadStart 对应方法的参数为object,此参数可以为一个值对象,也可以为一个自定义对象。 1     public class Person
2     {
3         public string Name
4         {
5             get;
6             set;
7         }
8         public int Age
9         {
10             get;
11             set;
12         }
13     }
14
15     public class Message
16     {
17         public void ShowMessage(object person)
18         {
19             if (person != null)
20             {
21                 Person _person = (Person)person;
22                 string message = string.Format("\n{0}'s age is {1}!\nAsync threadId is:{2}",
23                     _person.Name,_person.Age,Thread.CurrentThread.ManagedThreadId);
24                 Console.WriteLine(message);
25             }
26             for (int n = 0; n < 10; n++)
27             {
28                 Thread.Sleep(300);
29                 Console.WriteLine("The number is:" + n.ToString());
30             }
31         }
32     }
33
34     class Program
35     {
36         static void Main(string[] args)
37         {
38             Console.WriteLine("Main threadId is:"+Thread.CurrentThread.ManagedThreadId);
39
40             Message message=new Message();
41             //绑定带参数的异步方法
42             Thread thread = new Thread(new ParameterizedThreadStart(message.ShowMessage));
43             Person person = new Person();
44             person.Name = "Jack";
45             person.Age = 21;
46             thread.Start(person);  //启动异步线程
47
48             Console.WriteLine("Do something ..........!");
49             Console.WriteLine("Main thread working is complete!");
50
51         }
52     }

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: