发票查验---异步处理多条记录---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 ...
随机推荐
- ac1008
这题说的是 给了n个点在圆 上 然后 i连 i+2 从i+2 开始连 i+4 然后 这样一直到某个点 已经被连过为止 如果还有的没有被连过 就从那个点开始 连 按照上面的规则 当 N大于6 的时 ...
- 安装rocketmq-console
一.alibaba版本 使用rocketmq命令查看集群状态,查看topic信息时比较麻烦,而且不直观,这个时候可以使用一些web页面来管理rocketmq. 以前曾使用过一个老版本的工具,适用于al ...
- javascript中的console.log有什么作用?
javascript中的console.log有什么作用? 主要是方便你调式javascript用的.你可以看到你在页面中输出的内容. 相比alert他的优点是:他能看到结构话的东西,如果是alert ...
- linux服务器文件索引inodes满了
inode节点中,记录了文件的类型.大小.权限.所有者.文件连接的数目.创建时间与更新时间等重要的信息,还有一个比较重要的内容就是指向数据块的指针.一般情况不需要特殊配置,如果存放文件很多,需要配置. ...
- 2016NOI冬令营day1
感冒了!!!: ( 上午听 picks 讲多项式导论(所有内容均不考)只听懂了那个O(n1.585)的多项式乘法算法 : ( 安装好了弹幕!太厉害了(有电脑的都在刷弹幕) : ( 中午吃的不错 : ...
- zookeeper与卡夫卡集群搭建
首先这片博客没有任何理论性的东西,只是详细说明kafka与zookeeper集群的搭建过程,需要三台linux服务器. java环境变量设置 zookeeper集群搭建 kafka集群搭建 java环 ...
- 02: DOM 实例
1.1 Event 对象 <body> <a id="myAnchor" href="http://www.microsoft.com"> ...
- C++ 单例模式(转载)
转载:http://www.cnblogs.com/cxjchen/p/3148582.html 转载:http://blog.csdn.net/hackbuteer1/article/details ...
- 支持github的chrome插件octotree
1.这款插件有何作用? 方便浏览github上的源码 2.安装方法 通过以下链接进行安装: https://chrome.google.com/webstore
- 三羊献瑞|2015年蓝桥杯B组题解析第三题-fishers
三羊献瑞 观察下面的加法算式: 祥 瑞 生 辉 三 羊 献 瑞 三 羊 生 瑞 气 (如果有对齐问题,可以参看[图1.jpg]) 其中,相同的汉字代表相同的数字,不同的汉字代表不同的数字. 请你填写& ...