Пример #1
0
        /// <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);
        }
Пример #2
0
        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);
        }