信息
您所需的主题如下所示。但此主题未包含在此库中。
此主题尚未评级 - 评价此主题

WaitHandle.WaitOne 方法

阻止当前线程,直到当前 WaitHandle 收到信号。

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

返回值

类型:System.Boolean
如果当前实例收到信号,则为 true 如果当前实例永远收不到信号,则 WaitOne 永不返回。
异常条件
ObjectDisposedException

当前实例已被释放。

AbandonedMutexException

线程退出时未释放互斥体,等待过程已终止。 在 Windows 98 或 Windows Millennium Edition 中不引发此异常。

InvalidOperationException

当前实例是另一个应用程序域中的 WaitHandle 的透明代理。

AbandonedMutexException 是 .NET Framework 2.0 版中新增的。 在以前的版本中,如果放弃互斥体,WaitOne 方法将返回 true 出现被放弃的 mutex 通常表明存在严重的编码错误。 对于系统范围的 mutex,这可能表明应用程序已突然终止(例如,通过使用 Windows 任务管理器)。 该异常中包含的信息对调试很有帮助。

此方法的调用方无限期阻止,直到当前实例收到信号。 使用此方法一直阻止到 WaitHandle 收到来自另一个线程的信号,例如异步操作完成时生成的信号。 有关更多信息,请参见 IAsyncResult 接口。

调用该重载等效于调用 WaitOne(Int32, Boolean) 方法重载,同时为第一个参数指定 -1 或 Timeout.Infinite,为第二个参数指定 false

重写此方法以自定义派生类的行为。

下面的代码示例说明在进程等待后台线程执行完时,如何使用等待句柄阻止进程终止。


using System;
using System.Threading;

class WaitOne
{
    static AutoResetEvent autoEvent = new AutoResetEvent(false);

    static void Main()
    {
        Console.WriteLine("Main starting.");

        ThreadPool.QueueUserWorkItem(
            new WaitCallback(WorkMethod), autoEvent);

        // Wait for work method to signal.
        autoEvent.WaitOne();
        Console.WriteLine("Work method signaled.\nMain ending.");
    }

    static void WorkMethod(object stateInfo) 
    {
        Console.WriteLine("Work starting.");

        // Simulate time spent working.
        Thread.Sleep(new Random().Next(100, 2000));

        // Signal that work is finished.
        Console.WriteLine("Work ending.");
        ((AutoResetEvent)stateInfo).Set();
    }
}


.NET Framework

受以下版本支持:4.5、4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持:4、3.5 SP1

可移植类库

受以下版本支持:可移植类库

适用于 Windows 应用商店应用的 .NET

受以下版本支持:Windows 8

Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008(不支持服务器核心角色), Windows Server 2008 R2(支持带 SP1 或更高版本的服务器核心角色;不支持 Itanium)

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

社区附加资源

显示:
© 2014 Microsoft. 版权所有。