📅  最后修改于: 2023-12-03 14:40:29.589000             🧑  作者: Mango
在C#中,Thread类是用于创建和管理线程的主要类。在创建Thread实例时,我们可以使用不同的构造函数,其中Thread(ThreadStart)构造函数是最常用的。
Thread(ThreadStart)构造函数接受一个ThreadStart委托作为参数。ThreadStart委托是一个没有参数和返回值的委托,它定义了线程应该执行的方法。
以下是ThreadStart委托的定义:
public delegate void ThreadStart();
因此,Thread(ThreadStart)构造函数的基本形式如下所示:
public Thread(ThreadStart start);
这个构造函数创建一个新的线程并将其启动,使其开始执行由ThreadStart委托指定的方法。
以下是一个示例:
using System;
using System.Threading;
class Program
{
static void Main()
{
Thread t = new Thread(new ThreadStart(Hello));
t.Start();
Console.WriteLine("Main thread exits.");
}
static void Hello()
{
Console.WriteLine("Hello from the new thread!");
}
}
在这个示例中,我们创建了一个名为“t”的新线程,并将其启动。新线程执行了一个名为“Hello”的方法,该方法在控制台上输出了一条消息。同时,在主线程中,我们打印了另一条消息,然后主线程退出。
输出结果为:
Hello from the new thread!
Main thread exits.
这个示例演示了如何使用Thread(ThreadStart)构造函数创建和启动新线程。
在上面的示例中,我们使用了一个名为“Hello”的方法作为ThreadStart委托的参数。同样地,我们可以使用Lambda表达式定义ThreadStart委托,而不必为其创建一个单独的函数。
以下是一个示例:
using System;
using System.Threading;
class Program
{
static void Main()
{
Thread t = new Thread(() => Console.WriteLine("Hello from the new thread!"));
t.Start();
Console.WriteLine("Main thread exits.");
}
}
输出结果与上一个示例相同:
Hello from the new thread!
Main thread exits.
在这个示例中,我们使用了一个Lambda表达式来定义ThreadStart委托。这个Lambda表达式没有任何参数,并且在启动线程时会被调用。
这种方法常常出现在创建匿名线程时,因为我们不需要为其创建单独的函数或委托。
Thread(ThreadStart)构造函数是创建和启动新线程的最常用方法之一。它接受一个ThreadStart委托作为参数,该委托定义了线程应该执行的方法。
我们可以使用一个方法或Lambda表达式来定义ThreadStart委托,这取决于用户的需求和代码的可读性。
无论使用哪种方法,Thread(ThreadStart)构造函数都将创建并启动一个新线程,使其开始执行指定的方法。