How about
AutoResetEvent.WaitOne(TimeSpan)
? You can create a TimeSpan object using the "-" operator on two DateTime objects. Thus, you can use something like:
AutoResetEvent^ m_event;
[...].
DateTime ^present = DateTime.Now;
DateTime ^future = gcnew DateTime...
m_event->WaitOne(future - present);
Sorry this is only valid for C++/CLI