📜  C#| Thread(ThreadStart)构造函数(1)

📅  最后修改于: 2023-12-03 14:40:29.589000             🧑  作者: Mango

C# | Thread(ThreadStart)构造函数

在C#中,Thread类是用于创建和管理线程的主要类。在创建Thread实例时,我们可以使用不同的构造函数,其中Thread(ThreadStart)构造函数是最常用的。

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)构造函数创建和启动新线程。

ThreadStart委托的Lambda表达式

在上面的示例中,我们使用了一个名为“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)构造函数都将创建并启动一个新线程,使其开始执行指定的方法。