📅  最后修改于: 2023-12-03 15:22:51.544000             🧑  作者: Mango
在 C# 中,ThreadStart 是一个委托类型,用于启动线程。在创建新线程时,可以通过提供一个 ThreadStart 类型的委托来定义该线程要执行的方法。
ThreadStart 委托的签名如下:
public delegate void ThreadStart();
它没有输入参数,并且不返回任何值。
有时候,我们需要在多个线程中执行同一个方法,并且这个方法有一些参数需要传入。在这种情况下,我们可以使用 ParameterizedThreadStart 委托。
ParameterizedThreadStart 委托的签名如下:
public delegate void ParameterizedThreadStart(object obj);
它接受一个 object 类型的参数,并且不返回任何值。我们可以将这个 object 类型的参数用于传递我们需要的参数。
以下是一个代码示例:
private static void DoWork(object parameter)
{
Console.WriteLine($"Thread started with parameter: {parameter}");
}
static void Main(string[] args)
{
Thread t = new Thread(new ParameterizedThreadStart(DoWork));
t.Start("parameter value");
}
在这个示例中,我们创建了一个新的线程,并传入了 DoWork 方法作为要执行的方法。我们也将一个字符串 "parameter value" 作为参数传递给该方法。
在 DoWork 方法中,我们读取了传递的字符串参数,并将其打印到控制台中。
最后,我们启动线程,并传递 "parameter value" 作为参数。运行程序后,将看到以下控制台输出:
Thread started with parameter: parameter value
ParameterizedThreadStart 委托让我们能够在创建线程时传递参数。通过将参数传递给 DoWork 方法,并在其中读取和使用它们,我们可以实现在多个线程中执行同一个方法并传递不同的参数的功能。