1
MSDN에서 "대기중인 스레드가 없으면 스레드에서 스레드가 대기하거나 해당 Reset
메서드가 호출 될 때까지 대기 핸들이 유지됩니다."AutoResetEvent 집합이 제한 시간 후에 호출 됨
EventWaitHandle MyWaitHandle = new AutoResetEvent(false);
스레드 # 1 :
public void Method1()
{
//do something
//wait for the signal or timeout
MyWaitHandle.WaitOne(10000);
//do something else on receiving signal or after timeout
}
스레드 # 2 : 내 응용 프로그램 스레드 # 1에서
//this would be called when there is a response from the external app
public void Method2()
{
//do something
//send the signal to waiting thread
MyWaitHandle.Set();
}
외부 응용 프로그램에 요청을 제출하고, 신호 또는 제한 시간을 기다리고 있습니다. 외부 앱 Thread # 2로부터 응답을 받으면 대기 핸들을 설정합니다. 이 set
은 시간 초과 후에도 호출 할 수 있습니다. 내 질문은
입니다. 1) 신호를 설정하는 시간 초과 후 Method2
을 호출 할 가능성이 큽니다. 앞으로 Thread # 1에 대한 요청이있을 때마다 WaitOne(10000)
은 아무 효과가 없으며 즉시 출시 될 예정입니까?
2) set
을 Method2
에 전화하지 않으려면 시간 초과가 발생 했습니까? 스레드 # 1에 문제가 있습니까?
왜 시간 초과 후에도 이벤트를 설정하지 않으시겠습니까? Method2는 Method1에 대한 준비가되었음을 알리지 못합니까? 아마도 당신이 달성하려는 것을 설명한다면 ... –
'Method2()'는 타임 아웃 후에 호출되는지 알 수 없습니다. 문제가 있습니다. 음, 시간을 모니터링하고 타임 아웃인지 알아보기 위해'bool' 변수를 설정할 수 있습니다. 하지만'bool' 값을 기반으로'Set()'을 호출 할 수 있습니까? 내가 전화하지 않으면 열린 손잡이 나 아무것도 남기지 않을까요? – user1178376