当我们在使用C#语言进行多线程编程时,常常需要在线程之间传递数据。本文将详细讲解C#线程间传递参数的方法。
方法一:使用Lambda表达式
在使用线程时,我们常常使用new Thread()
方法创建线程。这时候,可以使用Lambda表达式的形式,在创建线程的时候传递参数。具体方法如下:
using System;
using System.Threading;
class Program
{
static void Main()
{
int x = 10; // 假设我们要在线程中传递的参数是int类型的10
Thread t = new Thread(() => {
// 在Lambda表达式中使用x变量
Console.WriteLine("线程开始执行");
Console.WriteLine("x = " + x);
Console.WriteLine("线程执行结束");
});
t.Start();
Console.WriteLine("主线程结束");
Console.ReadKey();
}
}
以上代码中,我们首先在主线程定义了一个整型变量x
,并将其赋值为10。在创建线程对象的时候,使用Lambda表达式传递参数x,这里需要注意的是,Lambda表达式中的变量是可以使用外部定义的变量的。
方法二:使用ParameterizedThreadStart
ParameterizedThreadStart
是一个委托类型,在使用该委托类型时,可以将参数传递给线程方法。具体方法如下:
using System;
using System.Threading;
class Program
{
static void Main()
{
int x = 10; // 假设我们要在线程中传递的参数是int类型的10
Thread t = new Thread(MyThreadMethod); // 使用MyThreadMethod方法作为线程方法
t.Start(x);
Console.WriteLine("主线程结束");
Console.ReadKey();
}
// 线程方法
static void MyThreadMethod(object data)
{
// 通过强制类型转换获取参数值
int x = (int)data;
Console.WriteLine("线程开始执行");
Console.WriteLine("x = " + x);
Console.WriteLine("线程执行结束");
}
}
以上代码中,我们首先在主线程定义了一个整型变量x
,并将其赋值为10。在创建线程对象的时候,使用MyThreadMethod
作为线程方法,并通过Start
方法将变量x作为参数进行传递。在MyThreadMethod
中,通过强制类型转换获取参数值,并输出参数值。
总结
本文介绍了C#中两种线程间传递参数的方法,分别是使用Lambda表达式和使用ParameterizedThreadStart委托类型。在实际开发中,可以根据具体情况选择合适的方法进行使用。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:c#线程间传递参数详解 - Python技术站