Example #1
0
 private void Wait(IWorkResult[] preWorkUnitList, IWorkResult <TResult> workResult)
 {
     if (!WorkResult.Wait(preWorkUnitList))
     {
         workResult.IsError      = true;
         workResult.ErrorMessage = "前置工作处理出错!";
     }
 }
Example #2
0
        public IWorkResult <TResult> ExecuteSync(Func <TWorkArgs> args, Action <IWorkResult <TResult> > uiAction, IWorkResult[] preWorkUnitList, WaitMode mode)
        {
            IWorkResult <TResult> workResult = new WorkResult <TResult>()
            {
                IsError = false,
                Result  = default(TResult)
            };

            if (mode == WaitMode.Default || mode == WaitMode.Bll)
            {
                this.Wait(preWorkUnitList, workResult);
            }

            if (!workResult.IsError)
            {
                try
                {
                    TResult result = this.workSync(args());
                    workResult.Result = result;
                }
                catch (DevException hsex)
                {
                    workResult.IsError      = true;
                    workResult.HsufErrorNo  = hsex.ErrorNo;
                    workResult.ErrorMessage = hsex.Message;
                }
                catch (Exception exc)
                {
                    workResult.IsError      = true;
                    workResult.ErrorMessage = exc.Message;
                }
            }

            if (!workResult.IsError)
            {
                if (mode == WaitMode.UI)
                {
                    this.Wait(preWorkUnitList, workResult);
                }
            }

            if (uiAction != null)
            {
                try
                {
                    uiAction(workResult);
                }
                catch (Exception exc)
                {
                    Console.WriteLine(exc.Message);
                }
            }

            workResult.IsComplete = true;

            return(workResult);
        }