2010-02-14 4 views

답변

6

수면 대신 EventWaitHandle을 만들고 을 사용하여 시간 제한을 설정하는 것이 좋습니다.

스레드를 일찍 깨우려면 신호를 보내도록 이벤트를 설정하면됩니다.

먼저 생성 EventWaitHandle : 스레드에서 그런

wakeUpEvent = new EventWaitHandle(false, EventResetMode.ManualReset); 

:

메인 프로그램이 초기 스레드 일어나 싶어
wakeUpEvent.WaitOne(new TimeSpan(1, 0, 0)); 

:

wakeUpEvent.Set(); 

참고 : 이벤트를 자동 재설정 또는 수동 재설정으로 설정할 수 있습니다. 자동 재설정은 WaitOne이 이벤트에서 돌아 오면 비 신호로 다시 설정한다는 것을 의미합니다. 이것은 루프에 있고 여러 번 신호를 보낼 때 유용합니다.

+0

원하는 경우 스레드가 자동으로 중지되고 수동으로 작성됩니다. wakeUpEvent = new EventWaitHandle (false, EventResetMode.ManualReset | EventResetMode.AutoReset); 이제 타이머가 끝나면 스레드가 다시 작동하고 수동으로 중지 할 수도 있습니다. – aharon

1

스레드는 WaitObject에서 대기하고 다른 스레드에서 Set 메서드를 호출함으로써 시작할 수 있습니다. WaitHandle.WaitOne method을보십시오.

Here's 도움이 될만한 기사입니다.

관련 문제