public override Message Wait(int timeout) { this.signal.WaitOne(timeout); lock (this) { this.expired = this.message == null; return this.message; } }