WP7 多线程处理碰到的问题

文章详细介绍了如何优化WP7版OA系统中的财务审核流程,包括采用Panorama模板、多线程处理数据获取以及解决真机运行时的异常问题。最终通过注册Panorama的SelectionChanged事件和条件性读取函数解决了真机运行中的数据刷新问题。

之前做过一个公司的OA的财务审核流的wp7版。(http://www.cnblogs.com/xtechnet/archive/2011/06/02/2068772.html)之前代码结构有些紊乱,后来OA系统框架做了调整。前段开发方便了很多,重整针对wp7的财务审核流捋了一下。

采用Panorama 模板搭建的项目来实现页面效果,代码没有多少复杂。

审核分几类,每一类采用listbox来获取数据。数据获取最开始是一股脑直接按照顺序去执行读取函数,结果发现读取数据经常读取不到,调试的时候常会出现超时的现象。于是改成了多线程的方式来处理。

new System.Threading.Thread(() =>
{
System.Windows.Deployment.Current.Dispatcher.BeginInvoke(() =>
{
GetSalary();
});
}).Start();

 

每一类数据的获取都采用这个方式处理。

现在发现了一个比较奇怪的现象,采用模拟题或者真机调试,没有一点问题。显示如下:

 

但是,如果把真实手机上使用这个xap,在登录系统后跳转到这个界面后,需要将手机锁屏后,再解锁屏幕,数据才能刷出来。之后退出系统(不是关闭系统,是退回到系统的登陆界面)登陆其他人的账号,这时候不用重复上面的操作,就可以读出正确的数据信息

现在还没有找到具体的原因,只能猜测:

1.代码正确,但是代码对应的效率达不到真机的机器要求,这个比较胡扯

2.针对真机实际操作,代码需要增加一些额外的刷新操作,因为我觉得在解锁时,手机进入程序的时候重新读取了页面的状态;事实上我在写到这里的时候,我突然想到:如果按一下win键,然后再点击退回键重新进入页面会怎样呢?我试了一下,发现效果和锁屏后解锁一样。这似乎给我灌输了这样一个认识:我写的代码的确是获取了正确的数据,但是这段代码在手机上运行时,没有绑定到对应的ListBox控件上,需要一个类似刷新或者ReBind的操作?

3.更换代码处理方式,确实有不少其他的处理方式可以选择。再做尝试,然后补充此文档。

 

补充

2012年4月6日:昨天晚上回去换成家里的wifi,首次登陆,数据正常显示。之后再登陆,就变成之前在公司测试的效果了,要重新恢复到这个页面才显示数据。这是个什么道理?

2012年4月6日9:50 之前做了一些调整,不适用Thread,采用注册Panorama的SelectionChanged事件,然后根据SelectedIndex以及相应的Selected页面是否读取过得bool型标记来决定是否走相应的getlist函数,手机使用的问题就解决,正如昨天预想的,规避我所碰到的问题的方式很容易找到,不是问题。不过为什么针对这个问题的具体原因我还没找到,继续寻找。

现在界面如下:

用图标勾和叉来代表审核通过和审核退回。增加了一个刷新图标

 

转载于:https://www.cnblogs.com/xtechnet/archive/2012/04/05/2433172.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值