/// <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(); }
/// <summary> /// 静态构造函数创建异步执行对象创建工厂对象 /// </summary> static PartAsynWaitHelper() { _partAsynExcuteFactory = new PartAsynExcuteFactoryWPF(); }