在 C# 面试问题中将参数传递给线程——如果我们想将参数传递给线程,你会怎么做?我们需要通过一个线程程序的例子来解释。
答:线程函数的参数/参数可以通过多种方式传递,这是在 C# 中将参数传递给线程的 2 种方式
- 在 Thread.Start() 方法中使用参数
- 使用 ParameterizedThreadStart 类委托。
在 C# 中将参数传递给线程 – 2 种方式
将参数传递给线程实际上非常简单。让我们看一下 C# 中程序示例的 2 种方式
1- 使用 Thread.Start() 方法:
在此方法中,首先在c#程序中创建一个线程,并为线程[new Thread(threadFunc)]分配一个用户定义的线程函数,并将参数传递给线程Start(arg)方法。
实际上,在 C# 线程中,可以使用 Start() 重载方法。例如 Start() 和 Start(Object) 等,并且要在 C# 中将参数传递给线程,我们可以使用重载的 Start(Object)。
程序示例 – 在 C# 中使用 Thread.Start(Object) 方法:
using System;
using System.Threading;
namespace parameter_to_thread_function
{
class Program
{
static void Main(string[] args)
{
String arg = "Interview Sansar !!!";
//Create a thread
Thread tParm = new Thread(threadFunc);
//Start thread execution
tParm.Start(arg);//pass argument using Start(Object) method overload
}
//Thread function
static void threadFunc(object arg)
{
Console.WriteLine(arg);
}
}
}
2- 使用 ParameterizedThreadStart 委托:
将用户定义的线程函数传递给 ParameterizedThreadStart 委托,并将委托对象分配给 Thread 类对象。例如线程(新的 ParameterizedThreadStart(threadFunc))。下一步,调用 Start(arg) 线程函数。
程序示例 – 使用 ParameterizedThreadStart 委托:
using System;
using System.Threading;
namespace parameter_to_thread_function
{
class Program
{
static void Main(string[] args)
{
String arg = "Interview Sansar !!!";
//Create object of ParameterizedThreadStart
//pass it to Thread class constructor
//Call Start() method with argument
Thread tParm = new Thread(new ParameterizedThreadStart(threadFunc));
tParm.Start(arg);//pass argument using Start(Object) method
}
//Thread function
static void threadFunc(object arg)
{
Console.WriteLine(arg);
}
}
}