以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 }
相关文章推荐
- ThreadStart方式实现多线程
- 多线程实现Thread.Start()与ThreadPool.QueueUserWorkItem两种方式对比
- 多线程实现Thread.Start()与ThreadPool.QueueUserWorkItem两种方式对比
- C# 以ThreadStart方式实现多线程
- 以ThreadStart方式实现多线程
- 细说多线程(三)—— 以ThreadStart方式实现多线程
- 以ThreadStart方式实现多线程
- 多线程实现方式1:自定义一个类,继承Thread类,并重写run方法。
- java实现多线程的两种方式继承Thread类和实现Runnable接口
- java实现多线程的方式以及run方法和start方法的区别
- Java并发03:多线程实现三方式:继承Thread类、实现Runnable接口、实现Callable接口
- Java【多线程知识总结(5)】比较继承Thread类创建线程和实现Runnable接口创建线程这两种方式
- Java 多线程学习(1)——实现多线程的两种方式Thread/Runnable
- Java【多线程知识总结(5)】比较继承Thread类创建线程和实现Runnable接口创建线程这两种方式
- 【Java多线程学习】Java多线程的两种实现方式:继承Thread类 & 实现Runable接口
- java多线程:Thread类介绍,实现方式,示例
- 实现多线程的两种方式Runnable与Thread
- java 多线程 1 “常用的实现多线程的2种方式”:Thread 和 Runnable
- java实现多线程的两种方式继承Thread类和实现Runnable接口的方法
- 分析两种实现多线程的方式:Thread类和Runnable接口