Thread理解
Thread类的构造函数接收ThreadStart 和parameterizedThreadStart 类型的委托参数。
其中ThreadStart定义了一个无返回类型其无参数的构造方法。如果需要给线程传递数据,除了可以采用parameterizedThreadStart委托参数的Thread构造函数外,还可以创建一个类,把线程的方法定义为实例方法。
简单的线程 class Program { static void Main(string[] args) { Thread t1 = new Thread(ThreadMain); t1.Start();
Console.WriteLine("我是主线程");
} //无返回值无参数的方法 static void ThreadMain() { Console.WriteLine("开始一个线程"); } }
使用ParameterizedThreadStart委托参数 public struct Data { public string message; } class Program { static void Main(string[] args) { Data data = new Data(); data.message = "Hello Wrold"; // Thread t2 = new Thread(ThreadMainWithParameters); t2.Start(data); Console.WriteLine("我是主线程"); Console.ReadKey(); } //必须为void的带object的参数的方法 static void ThreadMainWithParameters(object o) { Data d = (Data)o; Console.WriteLine("开始一个线程,消息为{0}",d.message); } }
//新建一个类,通过其构造函数传递值 class MyThread { private string data; public MyThread(string data) { this.data = data; } public void ThreadMain() { Console.WriteLine("{0}",data); } } class Program { static void Main(string[] args) { MyThread myThread = new MyThread("我的新线程1"); Thread t3 = new Thread(myThread.ThreadMain); t3.Start(); Console.WriteLine("我是主线程"); Console.ReadKey(); } }
作者:suwenjiang
出处:http://www.cnblogs.com/myyouthlife/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。