Ejemplo n.º 1
0
        //------------------------------------------------------
        //
        //  Private methods
        //
        //------------------------------------------------------

        // Change the status to the new status.  Return true if this is allowed.
        // Do it all atomically.
        bool ChangeStatus(AsyncRequestStatus newStatus)
        {
            bool allowChange = false;

            lock (SyncRoot)
            {
                switch (newStatus)
                {
                case AsyncRequestStatus.Working:
                    allowChange = (_status == AsyncRequestStatus.Waiting);
                    break;

                case AsyncRequestStatus.Completed:
                    allowChange = (_status == AsyncRequestStatus.Working);
                    break;

                case AsyncRequestStatus.Cancelled:
                    allowChange = (_status == AsyncRequestStatus.Waiting) ||
                                  (_status == AsyncRequestStatus.Working);
                    break;

                case AsyncRequestStatus.Failed:
                    allowChange = (_status == AsyncRequestStatus.Working);
                    break;
                }

                if (allowChange)
                {
                    _status = newStatus;
                }
            }

            return(allowChange);
        }
Ejemplo n.º 2
0
        // Token: 0x06007496 RID: 29846 RVA: 0x00215CD4 File Offset: 0x00213ED4
        private void CompleteSetValue(AsyncSetValueRequest request)
        {
            AsyncSetValueRequest asyncSetValueRequest = (AsyncSetValueRequest)base.GetValue(BindingWorker.Feature.PendingSetValueRequest, null);

            if (asyncSetValueRequest == request)
            {
                base.ClearValue(BindingWorker.Feature.PendingSetValueRequest);
                if (this.CheckTarget() == null)
                {
                    return;
                }
                AsyncRequestStatus status = request.Status;
                if (status != AsyncRequestStatus.Completed && status == AsyncRequestStatus.Failed)
                {
                    object          obj = base.ParentBinding.DoFilterException(base.ParentBindingExpression, request.Exception);
                    Exception       ex  = obj as Exception;
                    ValidationError validationError;
                    if (ex != null)
                    {
                        if (TraceData.IsEnabled)
                        {
                            int    k     = this.PW.Length - 1;
                            object value = request.Value;
                            this.ReportSetValueError(k, request.TargetItem, request.Value, ex);
                            return;
                        }
                    }
                    else if ((validationError = (obj as ValidationError)) != null)
                    {
                        Validation.MarkInvalid(base.ParentBindingExpression, validationError);
                    }
                }
            }
        }
        // Token: 0x0600735A RID: 29530 RVA: 0x00211038 File Offset: 0x0020F238
        private bool ChangeStatus(AsyncRequestStatus newStatus)
        {
            bool   flag     = false;
            object syncRoot = this.SyncRoot;

            lock (syncRoot)
            {
                switch (newStatus)
                {
                case AsyncRequestStatus.Working:
                    flag = (this._status == AsyncRequestStatus.Waiting);
                    break;

                case AsyncRequestStatus.Completed:
                    flag = (this._status == AsyncRequestStatus.Working);
                    break;

                case AsyncRequestStatus.Cancelled:
                    flag = (this._status == AsyncRequestStatus.Waiting || this._status == AsyncRequestStatus.Working);
                    break;

                case AsyncRequestStatus.Failed:
                    flag = (this._status == AsyncRequestStatus.Working);
                    break;
                }
                if (flag)
                {
                    this._status = newStatus;
                }
            }
            return(flag);
        }
Ejemplo n.º 4
0
        // Token: 0x06007491 RID: 29841 RVA: 0x00215AE0 File Offset: 0x00213CE0
        private void CompleteGetValue(AsyncGetValueRequest request)
        {
            AsyncGetValueRequest asyncGetValueRequest = (AsyncGetValueRequest)base.GetValue(BindingWorker.Feature.PendingGetValueRequest, null);

            if (asyncGetValueRequest == request)
            {
                base.ClearValue(BindingWorker.Feature.PendingGetValueRequest);
                int num = (int)request.Args[1];
                if (this.CheckTarget() == null)
                {
                    return;
                }
                AsyncRequestStatus status = request.Status;
                if (status != AsyncRequestStatus.Completed)
                {
                    if (status != AsyncRequestStatus.Failed)
                    {
                        return;
                    }
                    this.ReportGetValueError(num, request.SourceItem, request.Exception);
                    this.PW.OnNewValue(num, DependencyProperty.UnsetValue);
                }
                else
                {
                    this.PW.OnNewValue(num, request.Result);
                    this.SetStatus(this.PW.Status);
                    if (num == this.PW.Length - 1)
                    {
                        base.ParentBindingExpression.TransferValue(request.Result, false);
                        return;
                    }
                }
            }
        }
        //------------------------------------------------------
        //
        //  Private methods
        //
        //------------------------------------------------------

        // Change the status to the new status.  Return true if this is allowed.
        // Do it all atomically.
        bool ChangeStatus(AsyncRequestStatus newStatus)
        {
            bool allowChange = false;

            lock(SyncRoot)
            {
                switch (newStatus)
                {
                    case AsyncRequestStatus.Working:
                        allowChange = (_status == AsyncRequestStatus.Waiting);
                        break;
                    case AsyncRequestStatus.Completed:
                        allowChange = (_status == AsyncRequestStatus.Working);
                        break;
                    case AsyncRequestStatus.Cancelled:
                        allowChange = (_status == AsyncRequestStatus.Waiting) ||
                                        (_status == AsyncRequestStatus.Working);
                        break;
                    case AsyncRequestStatus.Failed:
                        allowChange = (_status == AsyncRequestStatus.Working);
                        break;
                }

                if (allowChange)
                    _status = newStatus;;
            }

            return allowChange;
        }