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

Silverlight 5 RC新特性探索系列:13.Silverlight 5 RC 新增对并行任务库(TPL)的支持,第1张

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

        在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。编写代码如下:

 

  <?xml version="1.0" enCoding="utf-8" ?>     <a>111</a>   

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

 

  //SL4异步获取结果     private voID SL4InitiateWebRequest()             httpWebRequest request = (httpWebRequest)httpWebRequest.Create("http://localhost:12887/helloWorld.xml");         request.BeginGetResponse(new AsyncCallback(onRequestComplete), request);          private  voID onRequestComplete(IAsyncResult asynchronousResult)             httpWebRequest request = asynchronousResult.AsyncState as httpWebRequest;         httpWebResponse response = request.EndGetResponse(asynchronousResult) as httpWebResponse;         var s = response.GetResponseStream();         var reader = new StreamReader(s);         string xmlfileText = reader.ReadToEnd();         this.dispatcher.BeginInvoke(() => { MessageBox.Show("这是SL4获取Xml数据:"+xmlfileText); });       

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

 

  //silverlight 5并行计算      private voID SL5InitiateWebRequest()      {          string uri = "http://localhost:12887/helloWorld.xml"         var request = httpWebRequest.Create(uri);           var webTask = Task.Factory.FromAsync<WebResponse>(request.BeginGetResponse,              request.EndGetResponse,TaskCreationoptions.None)              .ContinueWith(task =>               {                   var response = (httpWebResponse)task.Result;                   var stream = response.GetResponseStream();                  var reader = new StreamReader(stream);                   string xmlfileText = reader.ReadToEnd();                  this.dispatcher.BeginInvoke(() => { MessageBox.Show("这是SL5获取Xml的数据:" + xmlfileText); });                  });      }    

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

 

  public MainPage()              InitializeComponent();         //调用普通异步         SL4InitiateWebRequest();         //并行任务库         SL5InitiateWebRequest();     }    

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

总结

以上是内存溢出为你收集整理的Silverlight 5 RC新特性探索系列:13.Silverlight 5 RC 新增对并行任务库(TPL)的支持全部内容,希望文章能够帮你解决Silverlight 5 RC新特性探索系列:13.Silverlight 5 RC 新增对并行任务库(TPL)的支持所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1072239.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存