The invocation of Monitor.Pulse(...)
or Monitor.PulseAll(...)
signals a Monitor.Wait(...)
that is enclosed by a while
loop. The while
loop does not depend on a field that is modified by the signaling thread; thus will not be affected by the signaled change.
Ensure that the signaling thread applies a change to the object's state.