博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Silverlight 5 RC新特性探索系列:13.Silverlight 5 RC 新增对并行任务库(TPL)的支持
阅读量:5082 次
发布时间:2019-06-13

本文共 1942 字,大约阅读时间需要 6 分钟。

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

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

111

        然后我们看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
(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(); }

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

转载于:https://www.cnblogs.com/chengxingliang/archive/2011/11/07/2230319.html

你可能感兴趣的文章
(旧笔记搬家)struts.xml中单独页面跳转的配置
查看>>
不定期周末福利:数据结构与算法学习书单
查看>>
strlen函数
查看>>
python的列表与shell的数组
查看>>
关于TFS2010使用常见问题
查看>>
软件工程团队作业3
查看>>
python标准库——queue模块 的queue类(单向队列)
查看>>
火狐、谷歌、IE关于document.body.scrollTop和document.documentElement.scrollTop 以及值为0的问题...
查看>>
深入理解JVM读书笔记--字节码执行引擎
查看>>
vue-搜索功能-实时监听搜索框的输入,N毫秒请求一次数据
查看>>
批处理 windows 服务的安装与卸载
查看>>
React文档翻译 (快速入门)
查看>>
nodejs fs路径
查看>>
动态规划算法之最大子段和
查看>>
linux c:关联变量的双for循环
查看>>
深入浅出理解zend framework(三)
查看>>
python语句----->if语句,while语句,for循环
查看>>
javascript之数组操作
查看>>
LinkedList源码分析
查看>>
TF-IDF原理
查看>>