문서를 영문으로 보려면 영문 확인란을 선택하세요. 마우스 포인터를 텍스트 위로 이동시켜 팝업 창에서 영문 텍스트를 표시할 수도 있습니다.
번역
영문
이 설명서는 보관되지만 유지 되지 않습니다.

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 이외의 음수인 경우

AbandonedMutexException

뮤텍스를 해제하지 않고 스레드가 종료되었기 때문에 대기 작업이 완료된 경우 Windows 98 또는 Windows Millennium Edition에서는 이 예외가 throw되지 않습니다.

InvalidOperationException

현재 인스턴스가 다른 응용 프로그램 도메인에 있는 WaitHandle에 대한 투명 프록시인 경우

millisecondsTimeout이 0이면 메서드가 차단하지 않습니다. 대신 대기 핸들의 상태를 테스트한 다음 즉시 반환합니다.

이 메서드의 호출자는 현재 인스턴스가 신호를 받거나 제한 시간이 초과될 때까지 차단합니다. WaitHandle 이 다른 스레드에서 신호(예: 비동기 작업이 완료되었을 때 발생하는 신호)를 받을 때까지 이 메서드를 사용하여 차단하십시오. 자세한 내용은 IAsyncResult 인터페이스를 참조하십시오.

파생 클래스의 동작을 사용자 지정하려면 이 메서드를 재정의합니다.

이 메서드 오버로드를 호출하는 것은 WaitOne(Int32, Boolean) 오버로드를 호출하고 exitContext에 대해 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.
        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(Server Core는 SP1 이상에서 지원됨), Windows Server 2003 SP2

.NET Framework에서 모든 플랫폼의 전체 버전을 지원하지는 않습니다. 지원되는 버전의 목록을 보려면 .NET Framework 시스템 요구 사항을 참조하십시오.
표시: