C# 启动线程入参
时间: 2023-07-26 14:19:37 浏览: 47
在 C# 中,启动线程可以通过以下几种方式传递参数:
1. 使用 Thread 类的 ParameterizedThreadStart 委托
ParameterizedThreadStart 委托可以接受一个 object 类型的参数,用于传递给线程方法。例如:
```
private void ThreadMethod(object obj)
{
string message = (string)obj;
// 线程方法的具体实现
}
// 启动线程时传递参数
Thread thread = new Thread(new ParameterizedThreadStart(ThreadMethod));
thread.Start("Hello world");
```
2. 使用 Lambda 表达式或匿名委托
可以使用 Lambda 表达式或匿名委托的方式来启动线程,并在其中传递参数。例如:
```
string message = "Hello world";
Thread thread = new Thread(() =>
{
// 线程方法的具体实现
Console.WriteLine(message);
});
thread.Start();
```
3. 使用线程局部存储
可以使用线程局部存储(Thread Local Storage,TLS)的方式在启动线程时传递参数。线程局部存储是一种线程私有的数据存储机制,可以在每个线程中保存一个唯一的数据副本。例如:
```
ThreadLocal<string> message = new ThreadLocal<string>(() => "Hello world");
Thread thread = new Thread(() =>
{
// 线程方法的具体实现
Console.WriteLine(message.Value);
});
thread.Start();
```
以上三种方式都可以在启动线程时传递参数,具体选择哪种方式取决于具体的需求和场景。需要注意的是,在使用线程局部存储时,需要确保每个线程都可以访问到相应的数据副本。