本篇体验:如何传递数据给线程,如何给线程命名,线程的异常处理,线程池。实在是太基础的部分。
□ 传递数据给线程
※ 使用Lambda表达式
class PRogram{static void Main(string[] args){Thread t = new Thread(() => Say("hello", "world"));t.Start();}static void Say(string msg, string msg1){Console.WriteLine("第一个参数值是:"+msg);Console.WriteLine("第二个参数值是:" + msg1);}}
使用Lambda表达式需要注意的一个问题。
class Program{static void Main(string[] args){for (int i = 0; i < 10; i++){new Thread(() => Console.WriteLine("当前线程#" + Thread.CurrentThread.ManagedThreadId + "输出的值是:" + i)).Start();}}}
说明,有些线程共享了局部变量i。如何解决线程共享栈变量的问题呢?只需要在每次遍历循环的时候,把i赋值给一个临时变量,再打印临时变量,不直接打印栈变量i。
class Program{static void Main(string[] args){for (int i = 0; i < 10; i++){int temp = i;new Thread(() => Console.WriteLine("当前线程#" + Thread.CurrentThread.ManagedThreadId + "输出的值是:" + temp)).Start();}}
新闻热点
疑难解答