本文档已存档,并且将不进行维护。

ThreadStart 委托

表示在 Thread 上执行的方法。

命名空间:System.Threading
程序集:mscorlib(在 mscorlib.dll 中)

[ComVisibleAttribute(true)] 
public delegate void ThreadStart ()
/** @delegate */
/** @attribute ComVisibleAttribute(true) */ 
public delegate void ThreadStart ()
JScript 支持使用委托,但不支持进行新的声明。

在创建托管的线程时,在该线程上执行的方法将通过一个传递给 Thread 构造函数的 ThreadStart 委托或 ParameterizedThreadStart 委托来表示。在调用 System.Threading.Thread.Start 方法之前,该线程不会开始执行。执行将从 ThreadStartParameterizedThreadStart 委托表示的方法的第一行开始。

Note注意

Visual Basic 和 C# 用户在创建线程时可以省略 ThreadStartParameterizedThreadStart 委托构造函数。在 Visual Basic 中,将方法传递给 Thread 构造函数时使用 AddressOf 运算符,例如 Dim t As New Thread(AddressOf ThreadProc)。在 C# 中,只需指定线程过程的名称。编译器会选择正确的委托构造函数。

Note注意

在 2.0 版的 .NET Framework 中,为 C++ 中的静态方法创建 ThreadStart 委托只需要一个参数:回调方法的地址(用类名限定)。在早期版本中,为静态方法创建委托需要两个参数:零(空)和方法地址。对于实例方法,所有版本都需要两个参数:实例变量和方法地址。

下面的代码示例演示用于创建 ThreadStart 委托以及将该委托与实例方法和静态方法一起使用的语法。

若想获得另一个演示如何创建 ThreadStart 委托的简单示例,请参见 Thread.Start 方法重载。有关创建线程的更多信息,请参见 启动时创建线程并传递数据

using System;
using System.Threading;

class Test
{
    static void Main() 
    {
        // To start a thread using a static thread procedure, use the
        // class name and method name when you create the ThreadStart
        // delegate. Beginning in version 2.0 of the .NET Framework,
        // it is not necessary to create a delegate explicityly. 
        // Specify the name of the method in the Thread constructor, 
        // and the compiler selects the correct delegate. For example:
        //
        // Thread newThread = new Thread(Work.DoWork);
        //
        ThreadStart threadDelegate = new ThreadStart(Work.DoWork);
        Thread newThread = new Thread(threadDelegate);
        newThread.Start();

        // To start a thread using an instance method for the thread 
        // procedure, use the instance variable and method name when 
        // you create the ThreadStart delegate. Beginning in version
        // 2.0 of the .NET Framework, the explicit delegate is not
        // required.
        //
        Work w = new Work();
        w.Data = 42;
        threadDelegate = new ThreadStart(w.DoMoreWork);
        newThread = new Thread(threadDelegate);
        newThread.Start();
    }
}

class Work 
{
    public static void DoWork() 
    {
        Console.WriteLine("Static thread procedure."); 
    }
    public int Data;
    public void DoMoreWork() 
    {
        Console.WriteLine("Instance thread procedure. Data={0}", Data); 
    }
}

/* This code example produces the following output (the order 
   of the lines might vary):
Static thread procedure.
Instance thread procedure. Data=42
 */

import System.*;
import System.Threading.*;
import System.Threading.Thread;

class Test
{
    public static void main(String[] args)
    {
        ThreadStart threadDelegate = new ThreadStart(Work.DoWork);
        Thread newThread = new Thread(threadDelegate);
        newThread.Start();
    } //main
} //Test

class Work
{
    public static void DoWork()
    {
    } //DoWork
} //Work

Windows 98、Windows 2000 SP4、Windows CE、Windows Millennium Edition、Windows Mobile for Pocket PC、Windows Mobile for Smartphone、Windows Server 2003、Windows XP Media Center Edition、Windows XP Professional x64 Edition、Windows XP SP2、Windows XP Starter Edition

.NET Framework 并不是对每个平台的所有版本都提供支持。有关受支持版本的列表,请参见系统要求

.NET Framework

受以下版本支持:2.0、1.1、1.0

.NET Compact Framework

受以下版本支持:2.0、1.0
显示: