コード例 #1
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);
                    }
                }
            }
        }
コード例 #2
0
ファイル: CLRBindingWorker.cs プロジェクト: ash2005/z
        internal override void DetachDataItem()
        {
            PW.DetachFromRootItem();
            if (XmlWorker != null)
            {
                XmlWorker.DetachDataItem();
            }

            // cancel any pending async requests.  If it has already completed,
            // but is now waiting in the dispatcher queue, it will be ignored because
            // we set _pending*Request to null.
            AsyncGetValueRequest pendingGetValueRequest = (AsyncGetValueRequest)GetValue(Feature.PendingGetValueRequest, null);

            if (pendingGetValueRequest != null)
            {
                pendingGetValueRequest.Cancel();
                ClearValue(Feature.PendingGetValueRequest);
            }

            AsyncSetValueRequest pendingSetValueRequest = (AsyncSetValueRequest)GetValue(Feature.PendingSetValueRequest, null);

            if (pendingSetValueRequest != null)
            {
                pendingSetValueRequest.Cancel();
                ClearValue(Feature.PendingSetValueRequest);
            }
        }
コード例 #3
0
        // Token: 0x06007495 RID: 29845 RVA: 0x00215CA8 File Offset: 0x00213EA8
        private static object OnCompleteSetValueOperation(object arg)
        {
            AsyncSetValueRequest asyncSetValueRequest = (AsyncSetValueRequest)arg;
            ClrBindingWorker     clrBindingWorker     = (ClrBindingWorker)asyncSetValueRequest.Args[0];

            clrBindingWorker.CompleteSetValue(asyncSetValueRequest);
            return(null);
        }
コード例 #4
0
        // Token: 0x06007493 RID: 29843 RVA: 0x00215C30 File Offset: 0x00213E30
        private static object OnSetValueCallback(AsyncDataRequest adr)
        {
            AsyncSetValueRequest asyncSetValueRequest = (AsyncSetValueRequest)adr;
            ClrBindingWorker     clrBindingWorker     = (ClrBindingWorker)asyncSetValueRequest.Args[0];

            clrBindingWorker.PW.SetValue(asyncSetValueRequest.TargetItem, asyncSetValueRequest.Value);
            return(null);
        }
コード例 #5
0
ファイル: CLRBindingWorker.cs プロジェクト: ash2005/z
        static object OnCompleteSetValueOperation(object arg)
        {
            AsyncSetValueRequest request = (AsyncSetValueRequest)arg;
            ClrBindingWorker     worker  = (ClrBindingWorker)request.Args[0];

            worker.CompleteSetValue(request);
            return(null);
        }
コード例 #6
0
ファイル: CLRBindingWorker.cs プロジェクト: ash2005/z
        static object OnSetValueCallback(AsyncDataRequest adr)
        {
            AsyncSetValueRequest request = (AsyncSetValueRequest)adr;
            ClrBindingWorker     worker  = (ClrBindingWorker)request.Args[0];

            worker.PW.SetValue(request.TargetItem, request.Value);
            return(null);
        }
コード例 #7
0
        // Token: 0x06007494 RID: 29844 RVA: 0x00215C6C File Offset: 0x00213E6C
        private static object OnCompleteSetValueCallback(AsyncDataRequest adr)
        {
            AsyncSetValueRequest asyncSetValueRequest = (AsyncSetValueRequest)adr;
            ClrBindingWorker     clrBindingWorker     = (ClrBindingWorker)asyncSetValueRequest.Args[0];
            DataBindEngine       engine = clrBindingWorker.Engine;

            if (engine != null)
            {
                engine.Marshal(ClrBindingWorker.CompleteSetValueLocalCallback, asyncSetValueRequest, 1);
            }
            return(null);
        }
コード例 #8
0
ファイル: CLRBindingWorker.cs プロジェクト: ash2005/z
        static object OnCompleteSetValueCallback(AsyncDataRequest adr)
        {
            AsyncSetValueRequest request = (AsyncSetValueRequest)adr;
            ClrBindingWorker     worker  = (ClrBindingWorker)request.Args[0];

            DataBindEngine engine = worker.Engine;

            if (engine != null) // could be null if binding has been detached
            {
                engine.Marshal(CompleteSetValueLocalCallback, request);
            }

            return(null);
        }
コード例 #9
0
        // Token: 0x06007492 RID: 29842 RVA: 0x00215B9C File Offset: 0x00213D9C
        private void RequestAsyncSetValue(object item, object value)
        {
            string nameFromInfo = this.GetNameFromInfo(this.PW.GetAccessor(this.PW.Length - 1));

            Invariant.Assert(nameFromInfo != null, "Async SetValue expects a name");
            AsyncSetValueRequest asyncSetValueRequest = (AsyncSetValueRequest)base.GetValue(BindingWorker.Feature.PendingSetValueRequest, null);

            if (asyncSetValueRequest != null)
            {
                asyncSetValueRequest.Cancel();
            }
            asyncSetValueRequest = new AsyncSetValueRequest(item, nameFromInfo, value, base.ParentBinding.AsyncState, ClrBindingWorker.DoSetValueCallback, ClrBindingWorker.CompleteSetValueCallback, new object[]
            {
                this
            });
            base.SetValue(BindingWorker.Feature.PendingSetValueRequest, asyncSetValueRequest);
            base.Engine.AddAsyncRequest(base.TargetElement, asyncSetValueRequest);
        }
コード例 #10
0
        void CompleteSetValue(AsyncSetValueRequest request)
        {
            AsyncSetValueRequest pendingSetValueRequest = (AsyncSetValueRequest)GetValue(Feature.PendingSetValueRequest, null);

            if (pendingSetValueRequest == request)
            {
                ClearValue(Feature.PendingSetValueRequest);

                // if the target has gone away, ignore the request
                if (CheckTarget() == null)
                {
                    return;
                }

                switch (request.Status)
                {
                case AsyncRequestStatus.Completed:
                    break;

                case AsyncRequestStatus.Failed:
                    object          filteredException = ParentBinding.DoFilterException(ParentBindingExpression, request.Exception);
                    Exception       exception         = filteredException as Exception;
                    ValidationError validationError;

                    if (exception != null)
                    {
                        if (TraceData.IsEnabled)
                        {
                            int    k     = PW.Length - 1;
                            object value = request.Value;
                            ReportSetValueError(k, request.TargetItem, request.Value, exception);
                        }
                    }
                    else if ((validationError = filteredException as ValidationError) != null)
                    {
                        Validation.MarkInvalid(ParentBindingExpression, validationError);
                    }

                    break;
                }
            }
        }
コード例 #11
0
        // Token: 0x0600746F RID: 29807 RVA: 0x002152B4 File Offset: 0x002134B4
        internal override void DetachDataItem()
        {
            this.PW.DetachFromRootItem();
            if (this.XmlWorker != null)
            {
                this.XmlWorker.DetachDataItem();
            }
            AsyncGetValueRequest asyncGetValueRequest = (AsyncGetValueRequest)base.GetValue(BindingWorker.Feature.PendingGetValueRequest, null);

            if (asyncGetValueRequest != null)
            {
                asyncGetValueRequest.Cancel();
                base.ClearValue(BindingWorker.Feature.PendingGetValueRequest);
            }
            AsyncSetValueRequest asyncSetValueRequest = (AsyncSetValueRequest)base.GetValue(BindingWorker.Feature.PendingSetValueRequest, null);

            if (asyncSetValueRequest != null)
            {
                asyncSetValueRequest.Cancel();
                base.ClearValue(BindingWorker.Feature.PendingSetValueRequest);
            }
        }
コード例 #12
0
ファイル: CLRBindingWorker.cs プロジェクト: ash2005/z
        void RequestAsyncSetValue(object item, object value)
        {
            // get information about the property whose value we want
            string name = GetNameFromInfo(PW.GetAccessor(PW.Length - 1));

            Invariant.Assert(name != null, "Async SetValue expects a name");

            // abandon any previous request
            AsyncSetValueRequest pendingSetValueRequest = (AsyncSetValueRequest)GetValue(Feature.PendingSetValueRequest, null);

            if (pendingSetValueRequest != null)
            {
                pendingSetValueRequest.Cancel();
            }

            // issue the new request
            pendingSetValueRequest =
                new AsyncSetValueRequest(item, name, value, ParentBinding.AsyncState,
                                         DoSetValueCallback, CompleteSetValueCallback,
                                         this);
            SetValue(Feature.PendingSetValueRequest, pendingSetValueRequest);
            Engine.AddAsyncRequest(TargetElement, pendingSetValueRequest);
        }
コード例 #13
0
        void CompleteSetValue(AsyncSetValueRequest request)
        {
            if (_pendingSetValueRequest == request) 
            {
                _pendingSetValueRequest = null; 
 
                switch (request.Status)
                { 
                case AsyncRequestStatus.Completed:
                    break;
                case AsyncRequestStatus.Failed:
                    object filteredException = ParentBinding.DoFilterException(ParentBindingExpression, request.Exception); 
                    Exception exception = filteredException as Exception;
                    ValidationError validationError; 
 
                    if (exception != null)
                    { 
                        if (TraceData.IsEnabled)
                        {
                            int k = PW.Length - 1;
                            object value = request.Value; 
                            ReportSetValueError(k, request.TargetItem, request.Value, exception);
                        } 
                    } 
                    else if ( (validationError = filteredException as ValidationError) != null )
                    { 
                        Validation.MarkInvalid(ParentBindingExpression, validationError);
                    }

                    break; 
                }
            } 
        } 
コード例 #14
0
        void RequestAsyncSetValue(object item, object value) 
        {
            // get information about the property whose value we want 
            string name = GetNameFromInfo(PW.GetAccessor(PW.Length-1)); 
            Invariant.Assert(name != null, "Async SetValue expects a name");
 
            // abandon any previous request
            if (_pendingSetValueRequest != null)
            {
                _pendingSetValueRequest.Cancel(); 
            }
 
            // issue the new request 
            _pendingSetValueRequest =
                new AsyncSetValueRequest(item, name, value, ParentBinding.AsyncState, 
                                DoSetValueCallback, CompleteSetValueCallback,
                                this);
            Engine.AddAsyncRequest(TargetElement, _pendingSetValueRequest);
        }