이 페이지가 유용했습니까?
이 콘텐츠에 대한 여러분의 의견은 중요합니다. 의견을 알려주십시오.
추가 의견
1500자 남음
SignalAndWait 메서드 (WaitHandle, WaitHandle, Int32, Boolean)
이 문서는 기계로 번역한 것입니다. 원본 텍스트를 보려면 포인터를 문서의 문장 위로 올리십시오. 추가 정보
번역
원본

WaitHandle.SignalAndWait 메서드 (WaitHandle, WaitHandle, Int32, Boolean)

제한 시간 간격을 부호 있는 32비트 정수로 지정하고 대기 상태로 들어가기 전에 컨텍스트에 대한 동기화 도메인을 종료할지 여부를 지정하여, 원자 단위 연산으로 WaitHandle 중 하나에게 알리고 다음을 기다립니다.

네임스페이스:  System.Threading
어셈블리:  mscorlib(mscorlib.dll)

public static bool SignalAndWait(
	WaitHandle toSignal,
	WaitHandle toWaitOn,
	int millisecondsTimeout,
	bool exitContext
)

매개 변수

toSignal
형식: System.Threading.WaitHandle
신호를 보낼 WaitHandle입니다.
toWaitOn
형식: System.Threading.WaitHandle
대기할 WaitHandle입니다.
millisecondsTimeout
형식: System.Int32
대기할 간격을 나타내는 정수입니다. 값이 Timeout.Infinite이면 즉, -1이면 무기한 대기합니다.
exitContext
형식: System.Boolean
대기 전에 컨텍스트에 대한 동기화 도메인을 끝내고(동기화된 컨텍스트에 있는 경우) 이 도메인을 다시 가져오려면 true이고, 그렇지 않으면 false입니다.

반환 값

형식: System.Boolean
신호를 보내고 대기하는 작업이 모두 성공적으로 수행되면 true가 반환되고, 신호는 성공적으로 보냈으나 대기가 완료되지 않으면 false가 반환됩니다.

예외조건
ArgumentNullException

toSignalnull입니다.

또는

toWaitOnnull입니다.

NotSupportedException

STAThreadAttribute 가 있는 스레드에서 메서드가 호출된 경우

PlatformNotSupportedException

Windows 98 또는 Windows Millennium Edition에서 이 메서드가 지원되지 않는 경우

InvalidOperationException

toSignal이 세마포이며 이미 최대 카운트에 도달한 경우

ArgumentOutOfRangeException

millisecondsTimeout이 무기한 시간 제한을 나타내는 -1 이외의 음수인 경우

AbandonedMutexException

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

InvalidOperationException

WaitHandle 에서 최대 횟수를 초과하여 신호를 받을 수 없는 경우

이 작업은 원자성을 보장하지 않습니다. 현재 스레드가 toSignal에 신호를 보낸 이후 toWaitOn에서 대기하기 전에 다른 프로세서에서 실행되는 스레드는 toWaitOn에 신호를 보내거나 대기할 수 있습니다.

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

컨텍스트 종료에 관한 참고 사항

exitContext 매개 변수는 기본값이 아닌 관리되는 컨텍스트 내에서 SignalAndWait 메서드를 호출하지 않으면 영향을 주지 않습니다. 이러한 상황은 스레드가 ContextBoundObject에서 파생된 클래스의 인스턴스에 대한 호출 내부에 있는 경우에 발생할 수 있습니다. String 과 같이 ContextBoundObject에서 파생되지 않은 클래스의 메서드를 실행하고 있는 경우에도 ContextBoundObject가 현재 응용 프로그램 도메인의 스택에 있으면 기본값이 아닌 컨텍스트에 있을 수 있습니다.

코드가 기본값이 아닌 컨텍스트에서 실행되는 경우 exitContexttrue를 지정하면 스레드는 SignalAndWait 메서드를 실행하기 전에 기본값이 아닌 관리되는 컨텍스트를 종료(즉, 기본 컨텍스트로 전환)합니다. 스레드는 SignalAndWait 메서드에 대한 호출이 완료된 후 기본값이 아닌 원래 컨텍스트로 돌아갑니다.

이는 컨텍스트 바인딩 클래스에 SynchronizationAttribute가 있는 경우에 유용합니다. 이런 경우 클래스의 멤버에 대한 모든 호출은 자동으로 동기화되고 동기화 도메인은 클래스에 대한 코드의 전체 본문입니다. 멤버의 호출 스택에 있는 코드에서 SignalAndWait 메서드를 호출하고 exitContexttrue로 지정하면 개체의 멤버에 대한 호출을 처리하다 중단된 다른 스레드가 진행될 수 있도록 해당 스레드가 동기화 도메인을 종료합니다. SignalAndWait 메서드가 반환할 때 호출을 한 스레드는 동기화 도메인에 다시 들어가기 위해 기다려야 합니다.

.NET Framework

4.5, 4, 3.5, 3.0, 2.0에서 지원

.NET Framework Client Profile

4, 3.5 SP1에서 지원

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 시스템 요구 사항.

커뮤니티 추가 항목

추가
Microsoft는 MSDN 웹 사이트에 대한 귀하의 의견을 이해하기 위해 온라인 설문 조사를 진행하고 있습니다. 참여하도록 선택하시면 MSDN 웹 사이트에서 나가실 때 온라인 설문 조사가 표시됩니다.

참여하시겠습니까?
표시:
© 2015 Microsoft