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)

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

Thread(ParameterizedThreadStart, Int32)

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

Thread(ThreadStart)

初始化 Thread 类的新实例。

Thread(ThreadStart, Int32)

初始化 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)

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

适用于

线程安全性

此类型是线程安全的。

另请参阅