Thread.Start 方法

定义

使线程得以按计划执行。

重载

Start()

导致操作系统将当前实例的状态更改为 Running

Start(Object)

导致操作系统将当前实例的状态更改为 Running,并选择提供包含线程执行的方法要使用的数据的对象。

Start()

导致操作系统将当前实例的状态更改为 Running

C#
public void Start ();
C#
[System.Runtime.Versioning.UnsupportedOSPlatform("browser")]
public void Start ();
属性

例外

线程已启动。

内存不足,无法启动此线程。

示例

下面的示例创建并启动一个线程。

C#
using System;
using System.Threading;

public class ThreadWork
{
   public static void DoWork()
   {
      for(int i = 0; i<3;i++) {
         Console.WriteLine("Working thread...");
         Thread.Sleep(100);
      }
   }
}
class ThreadTest
{
   public static void Main()
   {
      Thread thread1 = new Thread(ThreadWork.DoWork);
      thread1.Start();
      for (int i = 0; i<3; i++) {
         Console.WriteLine("In main.");
         Thread.Sleep(100);
      }
   }
}
// The example displays output like the following:
//       In main.
//       Working thread...
//       In main.
//       Working thread...
//       In main.
//       Working thread...

注解

线程处于 ThreadState.Running 状态后,操作系统可将其计划为执行。 线程开始在由 ThreadStart ParameterizedThreadStart 提供给线程构造函数的或委托表示的方法的第一行执行。 请注意,对的调用不 Start 会阻止调用线程。

备注

如果此重载与使用委托创建的线程一起使用 ParameterizedThreadStartnull 则将传递给由该线程执行的方法。

线程终止后,将无法通过对的另一次调用来重新启动 Start

另请参阅

适用于

.NET 7 和其他版本
产品 版本
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8
.NET Standard 2.0, 2.1

Start(Object)

导致操作系统将当前实例的状态更改为 Running,并选择提供包含线程执行的方法要使用的数据的对象。

C#
public void Start (object? parameter);
C#
[System.Runtime.Versioning.UnsupportedOSPlatform("browser")]
public void Start (object? parameter);
C#
public void Start (object parameter);

参数

parameter
Object

一个对象,包含线程执行的方法要使用的数据。

属性

例外

线程已启动。

内存不足,无法启动此线程。

该线程是使用 ThreadStart 委托而不是 ParameterizedThreadStart 委托创建的。

示例

下面的示例 ParameterizedThreadStart 使用静态方法和实例方法创建委托。

C#
using System;
using System.Threading;

public class Work
{
    public static void Main()
    {
        // Start a thread that calls a parameterized static method.
        Thread newThread = new Thread(Work.DoWork);
        newThread.Start(42);

        // Start a thread that calls a parameterized instance method.
        Work w = new Work();
        newThread = new Thread(w.DoMoreWork);
        newThread.Start("The answer.");
    }
 
    public static void DoWork(object data)
    {
        Console.WriteLine("Static thread procedure. Data='{0}'",
            data);
    }

    public void DoMoreWork(object data)
    {
        Console.WriteLine("Instance thread procedure. Data='{0}'",
            data);
    }
}
// This example displays output like the following:
//       Static thread procedure. Data='42'
//       Instance thread procedure. Data='The answer.'

注解

线程处于 ThreadState.Running 状态后,操作系统可将其计划为执行。 线程开始在由 ThreadStart ParameterizedThreadStart 提供给线程构造函数的或委托表示的方法的第一行执行。 请注意,对的调用不 Start 会阻止调用线程。

线程终止后,将无法通过对的另一次调用来重新启动 Start

利用此重载和 ParameterizedThreadStart 委托,可以轻松地将数据传递给线程过程,但该方法不是类型安全的,因为任何对象都可以传递到此重载。 将数据传递给线程过程的一种更可靠的方法是将线程过程和数据字段放入辅助角色对象。 有关详细信息,请参阅 在启动时创建线程和传递数据

另请参阅

适用于

.NET 7 和其他版本
产品 版本
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8
.NET Standard 2.0, 2.1