このページは役に立ちましたか。
このページのコンテンツについての ご意見をお待ちしております
その他にご意見はありますか。
残り 1500 文字
エクスポート (0) 印刷
すべて展開
この記事は機械翻訳されたものです。 記事の文章にポインターを重ねると、原文のテキストが表示されます。 詳細情報
訳文
原文

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 Version 2.0 で新しく導入されました。 以前のバージョンでは、ミューテックスが放棄されると WaitOne メソッドは true を返します。 放棄されたミューテックスは、多くの場合、深刻なコーディング エラーの存在を意味します。 システム全体のミューテックスでは、アプリケーションが (たとえば Windows タスク マネージャーを使って) 突然終了されたことを意味する場合があります。 例外には、デバッグに役立つ情報が含まれています。

このメソッドの呼び出し元は、現在のインスタンスがシグナルを受け取るまでは、無期限にブロックします。 WaitHandle が、非同期操作が完了したとき生成されるシグナルなどの、別のスレッドからのシグナルを受信するまで、このメソッドを使用してブロックします。 詳細については、IAsyncResult インターフェイスのトピックを参照してください。

このメソッド オーバーロードを呼び出すことは、1 番目のパラメーターに -1 または Timeout.Infinite を指定し、2 番目のパラメーターに false を指定して WaitOne(Int32, Boolean) メソッド オーバーロードを呼び出すことと同じです。

このメソッドをオーバーライドして、派生クラスの動作をカスタマイズします。

待機ハンドルを使用して、バックグラウンド スレッドの実行が終了するまでプロセスの終了を保留する方法の例を次に示します。


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.2、4.5.1、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 Phone アプリ用 .NET

サポート対象 : Windows Phone 8、Silverlight 8.1

Windows Phone 8.1, Windows Phone 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 システム要件」を参照してください。

コミュニティの追加

追加
表示:
© 2015 Microsoft