void LazyCreateEvent(ref EventWaitHandle waitEvent, bool makeAutoResetEvent)
{
Debug.Assert(MyLockHeld);
Debug.Assert(waitEvent == null);
ExitMyLock();
EventWaitHandle newEvent;
if (makeAutoResetEvent)
newEvent = new AutoResetEvent(false);
else
newEvent = new ManualResetEvent(false);
EnterMyLock();
// maybe someone snuck in.
if (waitEvent == null)
waitEvent = newEvent;
}