Cancels the timer. Returns true the first time, false after that.
internal override bool Cancel() { return Interlocked.Exchange(ref _cancelled, 1) == 0; } }