Beispiel #1
0
        /// <summary>
        /// 执行异步委托
        /// </summary>
        /// <param name="asynWaitPara">异步等待执行参数</param>
        /// <param name="containerControl">容器控件</param>
        public override void Excute(PartAsynWaitPara <T, TResult> asynWaitPara, TContainer containerControl)
        {
            if (asynWaitPara.AsynWait == null)
            {
                PartAsynUIParaProxy.SetAsynWait(asynWaitPara, this.CreateAsynWaitShadeControl(_shadeType, asynWaitPara));
            }

            var container = containerControl as UIElement;

            if (container == null)
            {
                throw new ArgumentException($"容器元素类型{containerControl.GetType().FullName}不是{typeof(UIElement).FullName}子类");
            }

            if (asynWaitPara.Islock)
            {
                return;
            }

            lock (asynWaitPara.SyncRoot)
            {
                if (asynWaitPara.Islock)
                {
                    return;
                }

                PartAsynUIParaProxy.Lock(asynWaitPara);
            }


            this._asynWaitPara = asynWaitPara;

            //设置遮罩层控件
            asynWaitPara.AsynWait.ShadeBackground = PartAsynExcuteFactoryWPF.ConvertShadeBackground(asynWaitPara.AsynWaitBackground);
            this.AddAsynWaitControl((FrameworkElement)asynWaitPara.AsynWait, container);

            //启动执行线程
            base.StartAsynExcuteThread();
        }
Beispiel #2
0
 /// <summary>
 /// 静态构造函数创建异步执行对象创建工厂对象
 /// </summary>
 static PartAsynWaitHelper()
 {
     _partAsynExcuteFactory = new PartAsynExcuteFactoryWPF();
 }