public void Do(SpecialTask task) { this.DoInternal(token => { task.BeforeCancel(); if (this.IsTokenCancelled(token)) { task.IfCancelled?.Invoke(); } else { task.IfNotCancelled?.Invoke(); } task.Finally?.Invoke(); }); }
public void Do <T>(SpecialTask <T> task) { this.DoInternal(token => { var res = task.BeforeCancelling(); if (this.IsTokenCancelled(token)) { task.IfCancelled?.Invoke(res); } else { task.IfNotCancelled?.Invoke(res); } task.Finally?.Invoke(res); }); }