} // end Redeem() public void CommitTransfer() { lock ( m_syncRoot ) { if (null == m_source) { throw new InvalidOperationException("Transfer already committed."); } m_transferred = m_source._CompleteTransfer(); m_source = null; // The thread that will Redeem() the transfer may or may not be // waiting. If it is, signal it: Monitor.PulseAll(m_syncRoot); } // end lock } // end CommitTransfer()