给您详细讲解一下 C# 传递参数到线程的方法汇总:
1. 传递参数的方法总结
C# 中传递参数到线程基本上有以下 4 种方法:
-
使用 Thread 类的 ParameterizedThreadStart 委托来传递单一参数,主要是使用 object 类型作为参数,需要在线程内部进行一些转换,不是很方便。
-
使用 Thread 类的 ThreadStart 委托来创建线程并启动,此时,定义的是 ParameterizedThreadStart 类型的委托,在启动线程时,将参数打包为数组,这样就可以传递多个参数了,但是数组类型固定。
-
使用 Lambda 表达式简化线程代理的定义,此时,Lambda 表达式中的参数可以直接使用。
-
使用 Task.Run() 方法来启动线程,此方法是 .NET 4.0 引入的,可以很方便地传递参数。
2. 示例
下面给出两个示例,分别演示了使用 Thread 类和 Task 类的方式传递参数。
2.1 Thread 方法示例
using System.Threading;
class MainClass
{
static void Main(string[] args)
{
Thread t = new Thread(new ParameterizedThreadStart(DoSomeWork));
t.Start(5);
Console.ReadKey();
}
static void DoSomeWork(object data)
{
for (int i = 1; i <= (int)data; i++)
{
Console.WriteLine("工作线程开始工作");
Thread.Sleep(1000);
Console.WriteLine("工作线程完成第{0}个任务", i);
}
}
}
2.2 Task 方法示例
using System.Threading.Tasks;
class MainClass
{
static void Main(string[] args)
{
Task.Run(() => DoSomeWork(5));
Console.ReadKey();
}
static void DoSomeWork(int count)
{
for (int i = 1; i <= count; i++)
{
Console.WriteLine("工作线程开始工作");
Thread.Sleep(1000);
Console.WriteLine("工作线程完成第{0}个任务", i);
}
}
}
以上就是 C# 传递参数到线程的方法总结以及两个示例,希望能够帮助到您。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#传递参数到线程的方法汇总 - Python技术站