エクスポート (0) 印刷
すべて展開
この記事は翻訳者によって翻訳されたものです。 記事の文章にポインターを重ねると、原文のテキストが表示されます。
訳文
原文

WaitHandle.WaitOne メソッド (Int32)

32 ビット符号付き整数を使用して時間間隔を指定し、現在の WaitHandle が信号を受信するまで、現在のスレッドをブロックします。

名前空間:  System.Threading
アセンブリ:  mscorlib (mscorlib.dll 内)

public virtual bool WaitOne(
	int millisecondsTimeout
)

パラメーター

millisecondsTimeout
型: System.Int32
待機するミリ秒数。無制限に待機する場合は Timeout.Infinite (-1)。

戻り値

型: System.Boolean
現在のインスタンスがシグナルを受け取る場合は true。それ以外の場合は false

例外条件
ObjectDisposedException

現在のインスタンスは既に破棄されています。

ArgumentOutOfRangeException

millisecondsTimeout が -1 以外の負数です。-1 は無制限のタイムアウトを表します。

AbandonedMutexException

スレッドがミューテックスを解放せずに終了したため、待機が完了しました。 この例外は、Windows 98 および Windows Millennium Edition ではスローされません。

InvalidOperationException

別のアプリケーション ドメインでは、現在のインスタンスは WaitHandle の透過プロキシです。

millisecondsTimeout が 0 の場合、このメソッドではブロックが行われません。 待機ハンドルの状態をテストして、すぐに制御を戻します。

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

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

このメソッド オーバーロードを呼び出すことは、WaitOne(Int32, Boolean) オーバーロードを呼び出し、exitContextfalse を指定することと同じです。

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


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.
        if(autoEvent.WaitOne(1000))
        {
            Console.WriteLine("Work method signaled.");
        }
        else
        {
            Console.WriteLine("Timed out waiting for work " +
                "method to signal.");
        }
        Console.WriteLine("Main 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、3.5 SP1、3.0 SP2、2.0 SP2

.NET Framework Client Profile

サポート対象: 4、3.5 SP1

Windows 7, Windows Vista SP1 以降, Windows XP SP3, Windows Server 2008 (Server Core はサポート対象外), Windows Server 2008 R2 (SP1 以降で Server Core をサポート), Windows Server 2003 SP2

.NET Framework では、各プラットフォームのすべてのバージョンはサポートしていません。 サポートされているバージョンについては、「.NET Framework システム要件」を参照してください。

コミュニティの追加

追加
表示:
© 2014 Microsoft