コード例 #1
0
 private void ValidateStatus(PandaTaskStatus expectedStatus)
 {
     if (expectedStatus != Status)
     {
         throw new InvalidOperationException($@"Expect Task state: {expectedStatus} but was: {Status}");
     }
 }
コード例 #2
0
        /// <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;
        }
コード例 #3
0
        /// <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;
        }