2010-12-13 2 views
0

В моем консольном приложении WaitForSingleObject в родительском потоке с тайм-аутом 5 секунд.WaitForSingleObject не Time Out - C++

dwObjectWaitState = ::WaitForSingleObject(s_hRxDataEvent, 50000L); 

После настройки физической среды (то есть не изменения кода), так что событие никогда не получит сигнал, я поставил точку останова в следующей строке, и запустить приложение. ПК никогда не попадает в точку останова. s_hRxDataEvent - это действительный дескриптор события, который обычно устанавливается в дочернем потоке. Приложение отлично работает, когда физическая среда настроена так, как ожидалось. Почему функция не работает? Благодарю.

+1

Ваша ценность составляет 50 секунд, вы подождали 50 секунд? 5 секунд будет '5000L' – pstrjds

ответ

2

Таймаут в миллисекундах. 50000 - 50 секунд, а не 5 секунд.

1

Обратите внимание, что у вас есть дополнительный ноль.

+0

Слишком удивительно http://i.imgur.com/fZNQj.png –

+0

----- LOL ----- –

1

50000L миллисекунды = 50 секунд.

1

Значение таймаута для WaitForSingleObject указано в миллисекундах, поэтому 50000L означает 50 секунд, а не 5 секунд.