C#从零开始学线程_003_给Thread线程传参

2022/2/18 1:12:42

本文主要是介绍C#从零开始学线程_003_给Thread线程传参,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

给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());
}

 



这篇关于C#从零开始学线程_003_给Thread线程传参的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程