欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

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

发布时间:2025/3/20 编程问答 43 豆豆
生活随笔 收集整理的这篇文章主要介绍了 Silverlight 5 RC新特性探索系列:13.Silverlight 5 RC 新增对并行任务库(TPL)的支持 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

        在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 下载。

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

    总结

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

    如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。