Thread 类

定义

创建和控制线程、设置其优先级并获取其状态。

public ref class Thread sealed : System::Runtime::ConstrainedExecution::CriticalFinalizerObject
public ref class Thread sealed
public ref class Thread sealed : System::Runtime::InteropServices::_Thread
public ref class Thread sealed : System::Runtime::ConstrainedExecution::CriticalFinalizerObject, System::Runtime::InteropServices::_Thread
public sealed class Thread : System.Runtime.ConstrainedExecution.CriticalFinalizerObject
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class Thread
[System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)]
public sealed class Thread : System.Runtime.InteropServices._Thread
[System.Runtime.InteropServices.ComVisible(true)]
[System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)]
public sealed class Thread : System.Runtime.ConstrainedExecution.CriticalFinalizerObject, System.Runtime.InteropServices._Thread
type Thread = class
    inherit CriticalFinalizerObject
[<System.Runtime.InteropServices.ComVisible(true)>]
type Thread = class
[<System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)>]
type Thread = class
    interface _Thread
[<System.Runtime.InteropServices.ComVisible(true)>]
[<System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)>]
type Thread = class
    inherit CriticalFinalizerObject
    interface _Thread
Public NotInheritable Class Thread
Inherits CriticalFinalizerObject
Public NotInheritable Class Thread
Public NotInheritable Class Thread
Implements _Thread
Public NotInheritable Class Thread
Inherits CriticalFinalizerObject
Implements _Thread
继承
继承
Thread
属性
实现

注解

有关此 API 的详细信息,请参阅 Thread 的补充 API 备注

构造函数

名称 说明
Thread(ParameterizedThreadStart, Int32)

初始化类的新实例 Thread ,指定一个委托,该委托允许在启动线程时将对象传递给线程,并指定线程的最大堆栈大小。

Thread(ParameterizedThreadStart)

初始化类的新实例 Thread ,指定一个委托,该委托允许在启动线程时将对象传递给线程。

Thread(ThreadStart, Int32)

初始化类的新实例 Thread ,指定线程的最大堆栈大小。

Thread(ThreadStart)

初始化 Thread 类的新实例。

属性

名称 说明
ApartmentState
已过时.
已过时.

获取或设置此线程的公寓状态。

CurrentContext

获取正在执行线程的当前上下文。

CurrentCulture

获取或设置当前线程的区域性。

CurrentPrincipal

获取或设置线程的当前主体(用于基于角色的安全性)。

CurrentThread

获取当前正在运行的线程。

CurrentUICulture

获取或设置资源管理器用于在运行时查找区域性特定资源的当前区域性。

ExecutionContext

获取一个 ExecutionContext 对象,该对象包含有关当前线程的各种上下文的信息。

IsAlive

获取一个值,该值指示当前线程的执行状态。

IsBackground

获取或设置一个值,该值指示线程是否为后台线程。

IsThreadPoolThread

获取一个值,该值指示线程是否属于托管线程池。

ManagedThreadId

获取当前托管线程的唯一标识符。

Name

获取或设置线程的名称。

Priority

获取或设置一个值,该值指示线程的计划优先级。

ThreadState

获取一个值,该值包含当前线程的状态。

方法

名称 说明
Abort()
已过时.

在调用线程的线程中引发一个 ThreadAbortException ,以开始终止线程的过程。 调用此方法通常会终止线程。

Abort(Object)
已过时.

在调用线程的线程中引发一个 ThreadAbortException ,以开始终止线程的过程,同时提供有关线程终止的异常信息。 调用此方法通常会终止线程。

AllocateDataSlot()

在所有线程上分配未命名的数据槽。 为了获得更好的性能,请改用带有属性标记的 ThreadStaticAttribute 字段。

AllocateNamedDataSlot(String)

在所有线程上分配命名数据槽。 为了获得更好的性能,请改用带有属性标记的 ThreadStaticAttribute 字段。

BeginCriticalRegion()

通知主机执行即将进入代码区域,其中线程中止或未经处理的异常的影响可能会危及应用程序域中的其他任务。

BeginThreadAffinity()

通知主机托管代码即将执行依赖于当前物理操作系统线程标识的说明。

DisableComObjectEagerCleanup()

关闭当前线程的运行时可调用包装器(RCW)的自动清理。

EndCriticalRegion()

通知主机执行即将进入代码区域,其中线程中止或未经处理的异常的影响仅限于当前任务。

EndThreadAffinity()

通知主机托管代码已完成执行指令,这些指令依赖于当前物理操作系统线程的标识。

Equals(Object)

确定指定的对象是否等于当前对象。

(继承自 Object)
Finalize()

确保在垃圾回收器回收 Thread 对象时释放资源和其他清理操作。

FreeNamedDataSlot(String)

消除进程中所有线程的名称和槽之间的关联。 为了获得更好的性能,请改用带有属性标记的 ThreadStaticAttribute 字段。

GetApartmentState()

返回一个 ApartmentState 值,该值指示单元状态。

GetCompressedStack()
已过时.
已过时.

返回一个 CompressedStack 对象,该对象可用于捕获当前线程的堆栈。

GetCurrentProcessorId()

获取用于指示当前线程正在执行的处理器的 ID。

GetData(LocalDataStoreSlot)

从当前线程的当前域中的指定槽中检索值。 为了获得更好的性能,请改用带有属性标记的 ThreadStaticAttribute 字段。

GetDomain()

返回运行当前线程的当前域。

GetDomainID()

返回唯一的应用程序域标识符。

GetHashCode()

返回当前线程的哈希代码。

GetHashCode()

用作默认哈希函数。

(继承自 Object)
GetNamedDataSlot(String)

查找命名数据槽。 为了获得更好的性能,请改用带有属性标记的 ThreadStaticAttribute 字段。

GetType()

获取当前实例的 Type

(继承自 Object)
Interrupt()

中断处于线程状态的 WaitSleepJoin 线程。

Join()

阻止调用线程,直到此实例表示的线程终止,同时继续执行标准 COM 和 SendMessage 泵送。

Join(Int32)

阻止调用线程,直到此实例表示的线程终止或指定的时间过长,同时继续执行标准 COM 和 SendMessage 抽水。

Join(TimeSpan)

阻止调用线程,直到此实例表示的线程终止或指定的时间过长,同时继续执行标准 COM 和 SendMessage 抽水。

MemberwiseClone()

创建当前 Object的浅表副本。

(继承自 Object)
MemoryBarrier()

按如下方式同步内存访问:执行当前线程的处理器无法以在调用 MemoryBarrier() 之后的内存访问之后执行内存访问 MemoryBarrier()之前重新排序指令。

ResetAbort()
已过时.

Abort(Object)取消当前线程的请求。

Resume()
已过时.
已过时.
已过时.

恢复已挂起的线程。

SetApartmentState(ApartmentState)

在线程启动之前设置线程的公寓状态。

SetCompressedStack(CompressedStack)
已过时.
已过时.

将捕获 CompressedStack 应用到当前线程。

SetData(LocalDataStoreSlot, Object)

为该线程的当前域设置当前正在运行的线程上指定槽中的数据。 为了获得更好的性能,请改用带有属性标记的 ThreadStaticAttribute 字段。

Sleep(Int32)

挂起当前线程的指定毫秒数。

Sleep(TimeSpan)

暂停当前线程的指定时间量。

SpinWait(Int32)

使线程等待参数定义的 iterations 次数。

Start()

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

Start(Object)

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

Suspend()
已过时.
已过时.
已过时.

挂起线程,或者如果线程已挂起,则不起作用。

ToString()

返回一个表示当前对象的字符串。

(继承自 Object)
TrySetApartmentState(ApartmentState)

在线程启动之前设置线程的公寓状态。

UnsafeStart()

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

UnsafeStart(Object)

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

VolatileRead(Byte)
已过时.

读取字段的值。 在需要内存的系统上,插入一个内存屏障,以防止处理器重新排序内存操作,如下所示:如果读取或写入出现在代码中的此方法之后,处理器无法在此方法之前移动它。

VolatileRead(Double)
已过时.

读取字段的值。 在需要内存的系统上,插入一个内存屏障,以防止处理器重新排序内存操作,如下所示:如果读取或写入出现在代码中的此方法之后,处理器无法在此方法之前移动它。

VolatileRead(Int16)
已过时.

读取字段的值。 在需要内存的系统上,插入一个内存屏障,以防止处理器重新排序内存操作,如下所示:如果读取或写入出现在代码中的此方法之后,处理器无法在此方法之前移动它。

VolatileRead(Int32)
已过时.

读取字段的值。 在需要内存的系统上,插入一个内存屏障,以防止处理器重新排序内存操作,如下所示:如果读取或写入出现在代码中的此方法之后,处理器无法在此方法之前移动它。

VolatileRead(Int64)
已过时.

读取字段的值。 在需要内存的系统上,插入一个内存屏障,以防止处理器重新排序内存操作,如下所示:如果读取或写入出现在代码中的此方法之后,处理器无法在此方法之前移动它。

VolatileRead(IntPtr)
已过时.

读取字段的值。 在需要内存的系统上,插入一个内存屏障,以防止处理器重新排序内存操作,如下所示:如果读取或写入出现在代码中的此方法之后,处理器无法在此方法之前移动它。

VolatileRead(Object)
已过时.

读取字段的值。 在需要内存的系统上,插入一个内存屏障,以防止处理器重新排序内存操作,如下所示:如果读取或写入出现在代码中的此方法之后,处理器无法在此方法之前移动它。

VolatileRead(SByte)
已过时.

读取字段的值。 在需要内存的系统上,插入一个内存屏障,以防止处理器重新排序内存操作,如下所示:如果读取或写入出现在代码中的此方法之后,处理器无法在此方法之前移动它。

VolatileRead(Single)
已过时.

读取字段的值。 在需要内存的系统上,插入一个内存屏障,以防止处理器重新排序内存操作,如下所示:如果读取或写入出现在代码中的此方法之后,处理器无法在此方法之前移动它。

VolatileRead(UInt16)
已过时.

读取字段的值。 在需要内存的系统上,插入一个内存屏障,以防止处理器重新排序内存操作,如下所示:如果读取或写入出现在代码中的此方法之后,处理器无法在此方法之前移动它。

VolatileRead(UInt32)
已过时.

读取字段的值。 在需要内存的系统上,插入一个内存屏障,以防止处理器重新排序内存操作,如下所示:如果读取或写入出现在代码中的此方法之后,处理器无法在此方法之前移动它。

VolatileRead(UInt64)
已过时.

读取字段的值。 在需要内存的系统上,插入一个内存屏障,以防止处理器重新排序内存操作,如下所示:如果读取或写入出现在代码中的此方法之后,处理器无法在此方法之前移动它。

VolatileRead(UIntPtr)
已过时.

读取字段的值。 在需要内存的系统上,插入一个内存屏障,以防止处理器重新排序内存操作,如下所示:如果读取或写入出现在代码中的此方法之后,处理器无法在此方法之前移动它。

VolatileWrite(Byte, Byte)
已过时.

将值写入字段。 在需要内存的系统上,插入一个内存屏障,以防止处理器重新排序内存操作,如下所示:如果在代码中出现此方法之前读取或写入,处理器将无法在此方法之后移动它。

VolatileWrite(Double, Double)
已过时.

将值写入字段。 在需要内存的系统上,插入一个内存屏障,以防止处理器重新排序内存操作,如下所示:如果在代码中出现此方法之前读取或写入,处理器将无法在此方法之后移动它。

VolatileWrite(Int16, Int16)
已过时.

将值写入字段。 在需要内存的系统上,插入一个内存屏障,以防止处理器重新排序内存操作,如下所示:如果在代码中出现此方法之前读取或写入,处理器将无法在此方法之后移动它。

VolatileWrite(Int32, Int32)
已过时.

将值写入字段。 在需要内存的系统上,插入一个内存屏障,以防止处理器重新排序内存操作,如下所示:如果在代码中出现此方法之前读取或写入,处理器将无法在此方法之后移动它。

VolatileWrite(Int64, Int64)
已过时.

将值写入字段。 在需要内存的系统上,插入一个内存屏障,以防止处理器重新排序内存操作,如下所示:如果在代码中出现此方法之前读取或写入,处理器将无法在此方法之后移动它。

VolatileWrite(IntPtr, IntPtr)
已过时.

将值写入字段。 在需要内存的系统上,插入一个内存屏障,以防止处理器重新排序内存操作,如下所示:如果在代码中出现此方法之前读取或写入,处理器将无法在此方法之后移动它。

VolatileWrite(Object, Object)
已过时.

将值写入字段。 在需要内存的系统上,插入一个内存屏障,以防止处理器重新排序内存操作,如下所示:如果在代码中出现此方法之前读取或写入,处理器将无法在此方法之后移动它。

VolatileWrite(SByte, SByte)
已过时.

将值写入字段。 在需要内存的系统上,插入一个内存屏障,以防止处理器重新排序内存操作,如下所示:如果在代码中出现此方法之前读取或写入,处理器将无法在此方法之后移动它。

VolatileWrite(Single, Single)
已过时.

将值写入字段。 在需要内存的系统上,插入一个内存屏障,以防止处理器重新排序内存操作,如下所示:如果在代码中出现此方法之前读取或写入,处理器将无法在此方法之后移动它。

VolatileWrite(UInt16, UInt16)
已过时.

将值写入字段。 在需要内存的系统上,插入一个内存屏障,以防止处理器重新排序内存操作,如下所示:如果在代码中出现此方法之前读取或写入,处理器将无法在此方法之后移动它。

VolatileWrite(UInt32, UInt32)
已过时.

将值写入字段。 在需要内存的系统上,插入一个内存屏障,以防止处理器重新排序内存操作,如下所示:如果在代码中出现此方法之前读取或写入,处理器将无法在此方法之后移动它。

VolatileWrite(UInt64, UInt64)
已过时.

将值写入字段。 在需要内存的系统上,插入一个内存屏障,以防止处理器重新排序内存操作,如下所示:如果在代码中出现此方法之前读取或写入,处理器将无法在此方法之后移动它。

VolatileWrite(UIntPtr, UIntPtr)
已过时.

将值写入字段。 在需要内存的系统上,插入一个内存屏障,以防止处理器重新排序内存操作,如下所示:如果在代码中出现此方法之前读取或写入,处理器将无法在此方法之后移动它。

Yield()

导致调用线程让出执行权,以便另一个已准备好在当前处理器上运行的线程可以运行。 操作系统选择要屈服于的线程。

显式接口实现

名称 说明
_Thread.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

将一组名称映射为对应的一组调度标识符。

_Thread.GetTypeInfo(UInt32, UInt32, IntPtr)

检索对象的类型信息,然后可以使用该信息获取接口的类型信息。

_Thread.GetTypeInfoCount(UInt32)

检索对象提供的类型信息接口的数量(0 或 1)。

_Thread.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

提供对对象公开的属性和方法的访问。

适用于

线程安全性

此类型是线程安全的。

另请参阅