给Thread线程传递参数,一般有两种方法
- 通过Thread的Start()方法给线程传递参数,这种方法只能传递一个Object类型的参数;
- 通过lambda表达式给Thread线程传递参数,这种方式可以给线程中的函数传递多个参数。
通过Thread的Start()方法给线程传递参数:
1 internal void Do() 2 { 3 Thread t = new Thread(Method); //创建一个Thread对象t, 4 t.Start("Hello"); //通过Start方法将参数传递给给线程,该方法只能接受一个Object类型的对象 5 } 6 7 /// <summary> 8 /// 线程中执行的方法,该方法只能接受一个Object类型的对象 9 /// </summary> 10 /// <param name="obj"></param> 11 private void Method(object? obj) 12 { 13 Console.WriteLine(obj.ToString()); 14 }
可以简写成一下的形式:
1 internal void Do() 2 { 3 new Thread(Method).Start("Hello"); //创建一个Thread对象t,并通过Star方法启动线程,且向线程传递参数 4 } 5 6 /// <summary> 7 /// 线程中执行的方法,该方法只能接受一个Object类型的对象 8 /// </summary> 9 /// <param name="obj"></param> 10 private void Method(object? obj) 11 { 12 Console.WriteLine(obj.ToString()); 13 }
通过lambda表达式给Thread线程传递多个参数
1 internal void Do() 2 { 3 Thread t = new Thread(() => Method(2, 3)); //通过lambda表达式来给线程中的函数传递两个参数 4 t.Start(); 5 } 6 7 private void Method(int i, int j) 8 { 9 Console.WriteLine((i + j).ToString()); 10 }
也可以简写为下面的形式
internal void Do() { new Thread(() => Method(2, 3)).Start(); //通过lambda表达式来给线程中的函数传递两个参数 } private void Method(int i, int j) { Console.WriteLine((i + j).ToString()); }