• 发票查验---异步处理多条记录---demo代码


           /// 窗体加载事件
            /// </summary>
            /// <param name="obj"></param>
            private void Loaded(object obj)
            {
                _selfView = obj as UserControl;
                if (_selfView == null)
                {
                    LogHelper.WriteLog(this.GetType() + ".Loaded方法中,通过命令绑定传入的参数obj为null");
                    MaskPanelHelper.ShowMessageBoxWithMask("查验失败,请重试!");
                    return;
                }

             //模拟做了一个循环(没有实际意义,只是表明异步并发查验多条记录)

              for(i=0;i<10;i++)

               {
                     AsyncCheckSingleInvoice();

                 }
            }

            Action _action = null;
            /// <summary>
            /// 异步查验单张发票
            /// </summary>
            private void AsyncCheckSingleInvoice()
            {
                //var action = new Action(CheckSingleInvoice);
                //action.BeginInvoke(CheckInvoicesCallback, null);

                _action = new Action(CheckSingleInvoice);
                _action.BeginInvoke(CheckInvoicesCallback, null);
            }

            /// <summary>
            /// 查验单票(异步委托方法)
            /// </summary>
            private Invoice CheckSingleInvoice()
            {
                //网络故障检测
                if (!NetWorkHelper.IsConnectedInternet())
                {
                    Application.Current.Dispatcher.Invoke((Action)(() => { MaskPanelHelper.ShowMessageBoxWithMask("网络故障,请检查"); }));
                    return;
                }

             .......

             return _singleInvoice;  //查验完毕,再返回这张发票信息

           }

           /// <summary>
            /// 查验单票完毕后的回调
            /// </summary>
            private void CheckInvoicesCallback(IAsyncResult ir)
            {
                //异步委托的结果
                AsyncResult ar = ir as AsyncResult;
                if (ar != null)
                {
                    var action = (Action)ar.AsyncDelegate;//异步委托方法
                    action.EndInvoke(ar);//获得 "被异步委托”的“CheckSingleInvoice”方法的返回值
                }

                ........
                }

            }

    说明:当这个 “被异步委托” 的 “CheckSingleInvoice”执行完毕后,就会自动执行 “CheckInvoicesCallback” 回调方法,并且在CheckInvoicesCallback中可以获得CheckSingleInvoice方法的返回值

  • 相关阅读:
    Activiti(三)流程变量和流程实例
    vue(生命周期,钩子方法,组件)
    Vue(指令篇)
    Activiti(二)
    使用MyBatis_Plus生成代码
    activiti
    多线程常见面试题总结
    Dubbo集群-负载均衡
    dubbox入门
    事务的传播行为,隔离级别以及锁机制
  • 原文地址:https://www.cnblogs.com/changbaishan/p/9593783.html
Copyright © 2020-2023  润新知