private void ValidateStatus(PandaTaskStatus expectedStatus) { if (expectedStatus != Status) { throw new InvalidOperationException($@"Expect Task state: {expectedStatus} but was: {Status}"); } }
/// <summary> /// Complete current task /// </summary> internal virtual void Resolve() { //check status ValidateStatus(PandaTaskStatus.Pending); //complete task Status = PandaTaskStatus.Resolved; //notify handlers _doneAction?.Invoke(); _doneAction = null; }
/// <summary> /// Complete with error /// </summary> internal virtual void Reject(Exception ex) { //check arguments if (ex == null) { throw new ArgumentNullException(nameof(ex)); } //check status ValidateStatus(PandaTaskStatus.Pending); //set error Status = PandaTaskStatus.Rejected; _errorInfo = ExceptionDispatchInfo.Capture(ex); //notify complete _failAction?.Invoke(Error); _failAction = null; }