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

  • 相关阅读:
    Chrome cookies folder
    Fat URLs Client Identification
    User Login Client Identification
    Client IP Address Client Identification
    HTTP Headers Client Identification
    The Personal Touch Client Identification 个性化接触 客户识别
    购物车 cookie session
    购物车删除商品,总价变化 innerHTML = ''并没有删除节点,内容仍存在
    453
    购物车-删除单行商品-HTMLTableElement.deleteRow()
  • 原文地址:https://www.cnblogs.com/changbaishan/p/9593783.html
Copyright © 2011-2022 走看看