之前做过一个公司的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,首次登陆,数据正常显示。之后再登陆,就变成之前在公司测试的效果了,要重新恢复到这个页面才显示数据。这是个什么道理?