zoukankan      html  css  js  c++  java
  • 发票查验---异步处理多条记录---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方法的返回值

  • 相关阅读:
    idea输出目录详解
    svn的使用教程
    java常用技术名词解析
    1.0 idea使用教程(配置)一
    fastDFS的搭建
    log4j的配置
    关于elementUI中上传组件点击上传时页面卡死的问题
    Nginx的反向代理
    给所有实体类重写tostring方法
    Nginx的配置
  • 原文地址:https://www.cnblogs.com/changbaishan/p/9593783.html
Copyright © 2011-2022 走看看