You can try out couple of things.

1. Try to see if there is any SetEvent for osReader.hEvent handle.
2. Try giving INFINITE time instead of 100 and see if it gets signalled.

I dont see anything wrong in the above program but your other thread for which you are waiting should signal the even for the current thread to continue with the execution.