public void Cancel() { if (!IsBusy) { return; } task.Cancel(); this.onComplete = null; taskRoutinePool.OnRoutineCanceled(this); }