public override bool Signal(Message message) { int old = Interlocked.Exchange(ref this.state, 2); if (old != 2) { if (old == 1) { this.timer.Dispose(); } this.callback(this.link, message); return true; } else { return false; } }