この記事は機械翻訳されています。英語版の記事を表示するには、[英語] のチェック ボックスをオンにしてください。また、テキストにマウス ポインターを合わせると、ポップアップ ウィンドウに英語のテキストを表示することもできます。
翻訳
英語

WaitHandle.WaitOne メソッド (Int32)

 

公開日: 2016年11月

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

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

public virtual bool WaitOne(
	int millisecondsTimeout
)

パラメーター

millisecondsTimeout
Type: System.Int32

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

戻り値

Type: System.Boolean

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

Exception Condition
ObjectDisposedException

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

ArgumentOutOfRangeException

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

AbandonedMutexException

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

InvalidOperationException

現在のインスタンスが透過的なプロキシを WaitHandle 別のアプリケーション ドメイン。

場合 millisecondsTimeout 0 の場合は、このメソッドはブロックされません。 待機ハンドルの状態をテストし、直ちに返されます。

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

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

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

次のコード例では、待機ハンドルを使用して、実行が終了するバック グラウンド スレッドを待機している間に終了してから、プロセスの状態を保持する方法を示します。

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();
    }
}

ユニバーサル Windows プラットフォーム
8 以降で使用可能
.NET Framework
2.0 以降で使用可能
ポータブル クラス ライブラリ
サポート対象: 移植可能 .NET プラットフォーム
Silverlight
2.0 以降で使用可能
Windows Phone Silverlight
7.0 以降で使用可能
Windows Phone
8.1 以降で使用可能
トップに戻る
表示: