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方法的返回值

  • 相关阅读:
    一个2013届毕业生(踏上IT行业)的迷茫(2)
    一个2013届毕业生(踏上IT行业)的迷茫(1)
    Java 开源博客——B3log Solo 0.6.5 正式版发布了!
    Java 开源博客——B3log Solo 0.6.5 正式版发布了!
    在CSDN博客中添加量子恒道统计功能的做法
    Struts2——(8)struts2中文件的上传
    Struts2——(7)拦截器组件
    让富文本编辑器支持复制doc中多张图片直接粘贴上传
    ASP net 上传整个文件夹
    js文件夹上传
  • 原文地址:https://www.cnblogs.com/changbaishan/p/9593783.html
Copyright © 2011-2022 走看看