Windows Phone 利用Async CTP实现异步加载数据

简介:

Async CTP是个好东西额,就是安装的时候比较坑…

跟N多补丁冲突,只要安装顺序对了才能顺利装上…

可以参考下以前写的:http://www.cnblogs.com/sun8134/archive/2011/09/19/2181030.html

 

异步是个好东西,可以让后台数据操作时前台也有反应而不是卡死

安装好Async CTP后,只要在wp项目中引用AsyncCtpLibrary_Phone.dll就可以使用async和await来实现异步加载了

MS已经封装好了一些异步操作,比如WebClient里就可以直接使用:

Uri ui = new Uri(urls);
System.Net.WebClient wc1 = new System.Net.WebClient();
string txs = await wc1.DownloadStringTaskAsync(ui);

 

下面来介绍下如何自己使用async和await来实现异步加载数据

实例中我们的目的是加载一个xml,并将数据绑定到listbox上来

首先我随便找了个学生成绩的XML

image

 

然后制作一个数据类students.cs

image

 

然后再编辑下listbox的绑定模板:

image

 

然后我们还需要一个ProgressIndicator,好在加载数据时给用户一个提示,我比较偷懒一直在用别人现成的一个东东

image

关于咋用这个东东大家去看作者的介绍吧:

http://www.jeff.wilcox.name/2011/07/creating-a-global-progressindicator-experience-using-the-windows-phone-7-1-sdk-beta-2/

http://www.cnblogs.com/alexis/archive/2011/09/04/2165994.html

大概效果:

image

 

前台的东西大体差不多了

下面主要是code behind里的代码事件了

首先我们要写一个方法来从xml中读取数据

        private ObservableCollection<students> loaddata()
        {
            XDocument xdoc = XDocument.Load("data.xml");
            ObservableCollection<students> studentsdataCollection = new ObservableCollection<students>();
            foreach (XElement element in xdoc.Element("学生成绩单").Descendants("学生成绩"))
            {     
                studentsdataCollection.Add(new students()
                {
                    stu_No = element.Element("学号").Value,
                    stu_Name = element.Element("姓名").Value,
                    stu_English = element.Element("外语").Value,
                    stu_Mathematic = element.Element("高等数学").Value,
                    stu_Physics = element.Element("大学物理").Value,
                    stuno_Politics = element.Element("政治").Value,
                    stu_Sports = element.Element("体育").Value,
                    stu_Total = element.Element("总分").Value
                });
            }
            //Thread.Sleep(5000);
            return studentsdataCollection;
        }

 

然后在页面加载事件里用async和await来实现异步调用这个方法,并将数据绑定到listbox上

        private async void PhoneApplicationPage_Loaded(object sender, RoutedEventArgs e)
        {
            GlobalIndicator.Instance.BusyForWork("正在加载数据,请稍候...");
            ObservableCollection<students> d1=await Task<ObservableCollection<students>>.Factory.StartNew(new Func<ObservableCollection<students>>(loaddata));
            base.Dispatcher.BeginInvoke(() =>
            {
                listbox1.ItemsSource = d1;
            });
 
            GlobalIndicator.Instance.WorkDone();
        }

 

其实很简单,看看大概效果(由于读取XML比较快,所以我加了Thread.Sleep(5000); 由于是异步加载,所以加载过程中可以正常切换Pivot Item):

imageimageimage

 

大概就在这么多,更多信息将看:

http://msdn.microsoft.com/en-us/library/vstudio/hh191443.aspx

http://www.wintellect.com/CS/blogs/jgarland/archive/2011/04/18/new-for-windows-phone-now-the-async-ctp.aspx

http://www.cnblogs.com/cracker/archive/2012/08/13/WindowsPhone_AsyncCTP.html#2448086

http://blogs.msdn.com/b/kevinash/archive/2012/02/21/async-ctp-task-based-asynchronous-programming-for-windows-phone.aspx

http://blogs.msdn.com/b/lucian/archive/2012/03/25/asyncctp-installation-problems-and-vs11.aspx

http://blogs.msdn.com/b/lucian/archive/2011/05/20/talk-how-to-write-an-async-connected-app-for-windows-phone-7.aspx

 



本文转自 sun8134 博客园博客,原文链接:  http://www.cnblogs.com/sun8134/archive/2012/10/12/2721671.html ,如需转载请自行联系原作者

相关文章
|
开发工具 Windows
Windows平台RTMP推送|轻量级RTSP服务实现本地摄像头|屏幕|叠加数据预览
大家在做Windows平台RTMP推送或轻量级RTSP服务的时候,不管是采集屏幕还是采集摄像头,亦或屏幕摄像头的叠加模式,总会有这样的诉求,采集到的数据,希望能本地看看具体采集的数据或者图像实际效果,也就是本次介绍的“预览”功能。
241 0
|
4月前
|
计算机视觉 Windows Python
windows下使用python + opencv读取含有中文路径的图片 和 把图片数据保存到含有中文的路径下
在Windows系统中,直接使用`cv2.imread()`和`cv2.imwrite()`处理含中文路径的图像文件时会遇到问题。读取时会返回空数据,保存时则无法正确保存至目标目录。为解决这些问题,可以使用`cv2.imdecode()`结合`np.fromfile()`来读取图像,并使用`cv2.imencode()`结合`tofile()`方法来保存图像至含中文的路径。这种方法有效避免了路径编码问题,确保图像处理流程顺畅进行。
423 1
|
18天前
|
存储 缓存 安全
硬盘数据恢复:恢复硬盘数据的9个实用方法(Windows版)
无论是工作文档、家庭照片,还是其他珍贵的数字资产,数据丢失总是一件让人头疼的事情。然而,当硬盘发生问题时,不必过于慌张——只要正确应对,许多数据都可以被成功恢复。本文将从常见数据丢失原因到具体恢复方法,为您提供全面的硬盘数据恢复指导。
|
1月前
|
数据库 数据安全/隐私保护 Windows
Windows远程桌面出现CredSSP加密数据修正问题解决方案
【10月更文挑战第30天】本文介绍了两种解决Windows系统凭据分配问题的方法。方案一是通过组策略编辑器(gpedit.msc)启用“加密数据库修正”并将其保护级别设为“易受攻击”。方案二是通过注册表编辑器(regedit)在指定路径下创建或修改名为“AllowEncryptionOracle”的DWORD值,并将其数值设为2。
295 3
|
4月前
|
缓存 NoSQL Linux
【Azure Redis 缓存】Windows和Linux系统本地安装Redis, 加载dump.rdb中数据以及通过AOF日志文件追加数据
【Azure Redis 缓存】Windows和Linux系统本地安装Redis, 加载dump.rdb中数据以及通过AOF日志文件追加数据
143 1
【Azure Redis 缓存】Windows和Linux系统本地安装Redis, 加载dump.rdb中数据以及通过AOF日志文件追加数据
|
4月前
|
Web App开发 存储 安全
微软警告数百万Windows用户:切勿冒险丢失所有数据
微软警告数百万Windows用户:切勿冒险丢失所有数据
微软警告数百万Windows用户:切勿冒险丢失所有数据
|
4月前
|
编解码 开发工具 C#
Windows电脑如何启动RTSP服务实现本地摄像头数据共享
本文介绍如何利用大牛直播SDK中的轻量级RTSP服务,在Windows平台上轻松采集摄像头数据并生成本地RTSP流。通过SDK提供的SmartPublisherDemo工具,用户能简便地选择摄像头、配置分辨率与帧率,并启动RTSP服务。此外,还支持音频采集、多端口服务以及动态水印等功能。生成的RTSP URL可用于其他终端拉流播放,无需额外部署服务器。该服务适配多种应用场景,如安防监控、电子教室等,并兼容Windows 7及以上版本。对于希望集成此功能的开发者,SDK提供了C++及C#接口,并支持多种编译模式。
150 0
|
7月前
|
Windows
如何使用Windows Media Player刻录数据DVD
Windows Media Player是微软Windows系统自带的多媒体播放器,支持多种音频、视频格式及图片查看,也能接收网络广播和刻录CD/DVD。用户可利用它管理媒体文件、创建播放列表。然而,其刻录DVD功能有限,仅适用于数据DVD。若需创建可在DVD播放机上播放的视频DVD,建议使用专业软件如DVDFab DVD Creator。
|
7月前
|
数据库 Windows
第五十章 使用 ^SystemPerformance 监视性能 - Microsoft Windows 平台的 InterSystems IRIS 性能数据报告
第五十章 使用 ^SystemPerformance 监视性能 - Microsoft Windows 平台的 InterSystems IRIS 性能数据报告
52 0
|
7月前
|
存储 Kubernetes 安全
虚拟机测试Windows Server 2016原地升级2019,应用和数据完美保留
Windows Server 2016可以无缝升级到2019版本,确保应用程序和数据在原地升级过程中完整保留。
419 0