protected override void Schedule() { //only schedule if we idle if (Interlocked.Exchange(ref status, MailboxStatus.Busy) == MailboxStatus.Idle) { dispatcher.Schedule(Run); } }