/// <summary> /// 刷新门诊/住院的病历,医嘱,诊断 /// </summary> private void refreshEntpInfo() { Dictionary <string, string> ciDic = new Dictionary <string, string>(); ciDic.Add("Id_ent", this.Id_ent); ciDic.Add("Code_entp", this.Code_entp); DataEventArgs <Dictionary <string, string> > eventArgs = new DataEventArgs <Dictionary <string, string> >(ciDic); //异步执行的委托 AsyncExecuteDelegate workDelegate = workArgs => { //参数是Argument,这是自己传入的,自行转化类型 // 异步调用,远程服务等。返回结果保存在参数的Result中。 workArgs.Result = eventArgs; }; AsyncDoneDelegate doneDelegate = doneArgs => { //如果已经取消了,则返回 if (doneArgs.Cancelled) { return; } // 病历刷新 this.fireEntHistoryEmr((DataEventArgs <Dictionary <string, string> >)doneArgs.Result); // 诊断刷新 this.fireSelEntHistory(eventArgs); }; workDelegate.AsyncExecute(eventArgs, doneDelegate); }
private void AsyncExecute(WaitCallback callBack, object param) { AsyncExecuteDelegate workDelegate = workArgs => { // 异步调用。返回结果保存在参数的Result中。 workArgs.Result = param; }; AsyncDoneDelegate doneDelegate = doneArgs => { //如果已经取消了,则返回 if (doneArgs.Cancelled) { return; } //如果异步执行时发生了异常,可以在这里处理 if (doneArgs.Error != null) { Exception ex = doneArgs.Error; //记录日志 LogManager.GetLogger().ErrorEx(ex.Message, ex); //发布异常到UI ex.Publish(); //标记为已处理异常,如果不标记,框架会抛出异常 doneArgs.ErrorHandled = true; return; } //异步执行完毕后,处理异步数据结果 InnerRunDelegate(doneArgs.Result); }; workDelegate.AsyncExecute(param, doneDelegate); }