Silverlight 5 RC新特性探索系列:13.Silverlight 5 RC 新增对并行任务库(TPL)的支持-阿里云开发者社区

开发者社区> 开发与运维> 正文

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.aspxhttp://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 下载。



本文转自程兴亮博客园博客,原文链接:http://www.cnblogs.com/chengxingliang/archive/2011/11/07/2230319.html,如需转载请自行联系原作者


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

其他文章