在Silverlight 5 RC版本中新增了对并行任务库(Task Parallel Library)的支持,Task Parallel Library简称TPL,它是指一个或者多个任务同时运行,类似线程或者线程池。在本例中将会以并行任务库和异步获取数据进行对比。相关资料可以看http://msdn.microsoft.com/en-us/library/dd537609.aspx和http://www.cnblogs.com/vwxyzh/tag/TPL/

首先新建一个Silverlight 5项目,在其Web项目中添加一个新的xml文件helloWorld.xml。编写代码如下:

  1. <?xml version="1.0" encoding="utf-8" ?>
  2. <a>111</a>

然后我们看Silverlight 4及之前的版本中如何异步获取数据,其代码如下:

  1. //SL4异步获取结果
  2. private void SL4InitiateWebRequest()
  3. {
  4. HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("http://localhost:12887/helloWorld.xml");
  5. request.BeginGetResponse(new AsyncCallback(onRequestComplete), request);
  6. }
  7. private  void onRequestComplete(IAsyncResult asynchronousResult)
  8. {
  9. HttpWebRequest request = asynchronousResult.AsyncState as HttpWebRequest;
  10. HttpWebResponse response = request.EndGetResponse(asynchronousResult) as HttpWebResponse;
  11. var s = response.GetResponseStream();
  12. var reader = new StreamReader(s);
  13. string xmlFileText = reader.ReadToEnd();
  14. this.Dispatcher.BeginInvoke(() => { MessageBox.Show("这是SL4获取Xml数据:"+xmlFileText); });
  15. }

然后我们再看通过TPL来异步获取数据,当然这之前需要using System.Threading.Tasks。

  1. //silverlight 5并行计算
  2. private void SL5InitiateWebRequest()
  3. {
  4. string uri = "http://localhost:12887/helloWorld.xml";
  5. var request = HttpWebRequest.Create(uri);
  6. var webTask = Task.Factory.FromAsync<WebResponse>(request.BeginGetResponse,
  7. request.EndGetResponse,TaskCreationOptions.None)
  8. .ContinueWith(task =>
  9. {
  10. var response = (HttpWebResponse)task.Result;
  11. var stream = response.GetResponseStream();
  12. var reader = new StreamReader(stream);
  13. string xmlFileText = reader.ReadToEnd();
  14. this.Dispatcher.BeginInvoke(() => { MessageBox.Show("这是SL5获取Xml的数据:" + xmlFileText); });
  15. });
  16. }

最后我们客户端调用上面的两种方式来获取数据。

  1. public MainPage()
  2. {
  3. InitializeComponent();
  4. //调用普通异步
  5. SL4InitiateWebRequest();
  6. //并行任务库
  7. SL5InitiateWebRequest();
  8. }

运行效果一致,如下两图,另外如需源码请点击SL5Ansyc.zip 下载。

转载于:https://blog.51cto.com/chengxingliang/827058

Silverlight 5 RC新特性探索系列:13.Silverlight 5 RC 新增对并行任务库(TPL)的支持相关推荐

  1. Silverlight 5 RC新特性探索系列:12.Silverlight 5 RC 窗口模式下访问自定义DLL和WIN32 API...

    在Silverlight 5 RC版本中针对访问权限进行了相应的提升,它的项目属性中新增了一个复选框"在浏览器内运行时需要提升的信任",如下图: 它将为在浏览器模式下运行的应用程序 ...

  2. Silverlight 5 beta新特性探索系列:9.视频快进快退和TextSearch对象对文字项查询

    本节讲诉两个新特性:一.在Silverlight 5中可以控制MediaElement对象播放的视频进行快进快退控制.二.在Silverlight 5中的文字项进行搜索查询. 一.对于MediaEle ...

  3. Silverlight 5 beta新特性探索系列:3.Silverlight5中的文字增进控制【附带实例源码】...

    在Silverlight 5中新增了CharacterSpacing属性对文字间距进行控制,增加了RichTextBoxOverflow控件以灵活的对大量文字进行合理的排版显示. 一.Characte ...

  4. Spring.NET 1.3.1 新特性探索系列1——ASP.NET MVC的依赖注入

    Spring.NET 1.3.1的程序集Spring.Web.Mvc提供对ASP.NET MVC程序的整合.其中SpringControllerFactory类继承自DefaultController ...

  5. Spring.NET 1.3.1 新特性探索系列2——WCF命名空间解析器

    Spring.NET对分布式程序的支持是有目共睹的.在1.3.1之前的版本,对Remoting和Webservice支持的很好,并且有其对应的解析器,但对WCF支持的不是很完美.然而1.3.1版本加入 ...

  6. Silverlight 5 Beta新特性[4]文本缩进控制

    持续带来Silverlight 5 Beta新特性的更新.在Silverlight 5 Beta版本对文本的处理能力做了真正的改进.其中从官方Silverlight 5 Beta Futurez中提到 ...

  7. 【转】Silverlight 3 Beta 新特性解析(7)- Child Window和Shader Effect篇

    前提条件: 阅读本文之前请确认你已经安装了如下软件 Visual Studio 2008 (Express) SP1 Silverlight 3 Tools For Visual Studio Mic ...

  8. Silverlight 5 Beta 新特性预览

    MIX11大会昨天刚刚结束.第二天核心Session包含三个部分:Windows phone 7/Silverlight 5 Beta/Kinect for Windows SDK.在整个全程直播中. ...

  9. oracle 10g delete flashback,10g新特性,flashback系列 来自piner

    一 Flashback database falshback database是采用日志 falsgback drop是采用表空间的空间 其它的都是与undo有关... fashback是我对10g一 ...

最新文章

  1. android中menu菜单扩增_【已解决】Android添加Menu菜单
  2. Windows Service 2008 R2 远程桌面关闭,自动注销的解决方法
  3. python语言程序设计教程-Python语言程序设计(视频教程)
  4. 如何改变Myeclipse编辑区背景色
  5. TCP/IP / PDU 是什么
  6. oracle 绑定变量模糊查询,求助-ACTIVE DG 异常shutdown
  7. [SQL实战]之获取所有部门中当前员工薪水最高的相关信息
  8. 【思科模拟器基本使用】
  9. 移动互联网创新39个热点
  10. nested exception is java.lang.NumberFormatException: For input string: NaN
  11. 计算机的串口波特率,串口常用参数
  12. 今日睡眠质量记录77分
  13. 计算机编程入门语言哪个好?
  14. IntelliJ IDEA 项目相关的几个重要概念介绍
  15. 一个字符导致oracle安装出现ora-12154
  16. 《GhostXP_SP2电脑公司特别版_v8.5》
  17. 微信小程序和野狗数据库结合
  18. 关于网络关键节点分析的经典论文(一)
  19. 《分销商开发、维护与管理》--王越老师
  20. CVPR传捷报丨深兰科技再度折桂,连续4届获得CVPR挑战赛冠军

热门文章

  1. Codeforces 769D k-Интересные пары чисел
  2. 怎样将python的文件转化为windows的可执行程序
  3. Eclipse中设置在创建新类时自动生成注释的方法
  4. ArcGIS AddIN开发异常之--修饰符“static”对该项无效
  5. 深入ASP.NET数据绑定(中)——数据双向绑定机理
  6. 通往自由之路 | 云队友远程办公征文活动
  7. 【干货】专注用户体验,用最小代价验证你想法的可执行性
  8. 如何使 highchart图表标题文字可选择复制
  9. 图解设计模式-Abstract Factory模式
  10. MongoDB安装与副本集配置