发票查验---异步处理多条记录---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方法的返回值
发票查验---异步处理多条记录---demo代码的更多相关文章
- asp显示多条记录的代码
asp显示多条记录的代码 仅供参考 <%for i=1 to RS.PageSize%> <% if RS.EOF then exit for end if %> <tr ...
- salesforce 零基础学习(六十九)当新增/修改一条记录以后发生了什么(适合初学者)
salesforce开发中,我们会对object进行很多的操作,比如对object设置字段的必填性唯一性等,设置validation rule实现一下相关的字段的逻辑校验,设置workflow实现某个 ...
- XE中FMX操作ListBox,添加上千条记录(含图片)
我之前是想在ListBox的每个Item上添加一个图片,Item上所有的内容都是放在Object里赋值,结果发现加载一百条记录耗时四五秒: procedure TMainForm.AddItem; v ...
- mybatis一对多查询resultMap只返回了一条记录
问题描述:因为领导的一个需求,需要用到使用resultMap,很久没使用了,结果就除了点意外.就记录下这个问题 准备两个类:author(作者)和book(书),数据库创建对应的author-> ...
- TODO:从数据库中随机抽取一条记录
TODO:从数据库中随机抽取一条记录 1.最直接,最粗暴的方法先计算记录的总数,然后选择一个从0到记录总数之间的随机数n,利用skip跳过n条记录,这是效率低下的的方法,首先的记录总数,在用skip会 ...
- 错误:违反并发性: DeleteCommand 影响了预期 1 条记录中的 0 条
在access的mdb数据库动态更新的过程中,遇到了DeleteCommand出现DBConcurrencyException异常,错误:违反并发性: DeleteCommand 影响了预期 1 条记 ...
- Entity framewok 如何实现多条记录作为一条取出, for xml path如何实现
http://www.myexception.cn/linq/1288046.html Entity framewok 怎么实现多条记录作为一条取出, for xml path怎么实现News表:ID ...
- Python 逐行修改txt每条记录的内容
Txt中保存以些数据,这些数据中我们要逐行read line出来进行处理,约定第一个字符为"#"的数据表示已经处理. 一个办法是读取txt,新增另外一个已完成处理txt来保存完成的 ...
- mysql单列去重复group by分组取每组前几条记录加order by排序
mysql分组取每组前几条记录(排名) 附group by与order by的研究,需要的朋友可以参考下 --按某一字段分组取最大(小)值所在行的数据 复制代码代码如下: /* 数据如下: name ...
随机推荐
- EditPlus 5.1.2066 中文版(1月30日修正)
之前有一些网友反馈汉化版的 EditPlus 中翻页键无法正常工作.经过调查,发现是翻译工具的问题. 因此,我用新的工具重新翻译了 EditPlus.翻页键在新中文版中应该可以正常工作了. 有需要的网 ...
- Python: ljust()|rjust()|center()字符串对齐
通过某种对齐方式来格式化字符串 ①对于基本的操作,可以使用字符串的ljust(),rjust(),center() ②函数format()同样可以用来很容易的对齐字符串,使用<,>,~
- Linux LNMP架构搭建
一.搭建LNMP基本架构 1.L(http) N(nginx) M(mysql) P(php) 2.安装顺序 Mysql-->PHP-->Nginx 3.安装包 Discuz_3. htt ...
- linux内核分析 第18章读书笔记
十八章 调试 一.内核调试概述 1.需要面对的 一个确定的bug 一个藏匿bug的内核版本 相关的内核代码的知识和运气 2.艰难的调试工作 重现bug很困难:大部分bug通常都不是行为可靠而且定义明确 ...
- devicePixelRatio手机图片模糊的原因
一.移动设备图片模糊问题 手机上图片模糊问题原因就是一个像素在电脑上和手机上代表的实际像素的不同. 我们在样式表中使用的px(独立像素)单位其实并不一定代表着实际的一个像素(物理像素),这还要看硬件的 ...
- UESTC 594 我要长高 - 单调性优化
韩父有N个儿子,分别是韩一,韩二…韩N.由于韩家演技功底深厚,加上他们间的密切配合,演出获得了巨大成功,票房甚至高达2000万.舟子是名很有威望的公知,可是他表面上两袖清风实则内心阴暗,看到韩家红红火 ...
- Delphi XE5 for Android (六)
今天尝试了TTabControl的使用.在很多Android的app中,首次启动时都使用选项卡模式进行产品介绍,用户通过向左滑动,改变选项卡.在xe5下这项工作由TTabControl控件完成,如下图 ...
- Python3基础 str format 位置参数与关键字参数
Python : 3.7.0 OS : Ubuntu 18.04.1 LTS IDE : PyCharm 2018.2.4 Conda ...
- Python3基础 getattr 获取对象的指定属性值
Python : 3.7.0 OS : Ubuntu 18.04.1 LTS IDE : PyCharm 2018.2.4 Conda ...
- C#学习笔记(五):while循环和for循环
while循环 while循环和for循环,可以相互替换,范围和效能一样,理解事物的逻辑不一样 while循环用于条件不确定的逻辑 for循环用于计算次数的逻辑 for循环 快捷写法,按两下TAB i ...