Silverlight 5 RC新特性探索系列:13.Silverlight 5 RC 新增对并行任务库(TPL)的支持
2011-11-07 11:09
716 查看
在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。编写代码如下:
然后我们看Silverlight 4及之前的版本中如何异步获取数据,其代码如下:
然后我们再看通过TPL来异步获取数据,当然这之前需要using System.Threading.Tasks。
最后我们客户端调用上面的两种方式来获取数据。
运行效果一致,如下两图,另外如需源码请点击SL5Ansyc.zip 下载。
首先新建一个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新特性探索系列:15.Silverlight 5 RC 对OpenType字体属性的支持
- Silverlight 5 beta新特性探索系列:6.Silverlight 5新增低延迟声音效果类SoundEffect.支持wav音乐格式【附带源码实例】
- Silverlight 5 RC新特性探索系列:15.Silverlight 5 RC 对OpenType字体属性的支持
- Silverlight 5 beta新特性系列:6.Silverlight 5新增低延迟声音效果类SoundEffect.支持wav音乐格式
- Silverlight 5 RC新特性探索系列:12.Silverlight 5 RC 窗口模式下访问自定义DLL和WIN32 API
- Silverlight 5 RC新特性探索系列:12.Silverlight 5 RC 窗口模式下访问自定义DLL和WIN32 API
- Silverlight 5 beta新特性探索系列:1.安装Silverlight 5 beta环境以及OOB模式下Silverlight 5 多窗口支持
- Silverlight 5 RC新特性探索系列:14.Silverlight 5 RC 对字体呈现的改进
- Silverlight 5 beta新特性探索系列:1.安装Silverlight 5 beta环境以及OOB模式下Silverlight 5 多窗口支持
- Silverlight 5 RC新特性探索系列:14.Silverlight 5 RC 对字体呈现的改进
- Silverlight 5 RC新特性探索系列:11.SaveFileDialog保存文件指定默认名称---OpenFileDialog打开文件指定默认路径
- Silverlight 5 beta新特性探索系列:4.Silverlight 5 beta中鼠标双击/鼠标多重点击的实现
- Silverlight 5 beta新特性探索系列:4.Silverlight 5 beta中鼠标双击/鼠标多重点击的实现
- Silverlight 5 beta新特性探索系列:2.在XAML代码中设置断点和Binding绑定调试【附带源码实例】
- Silverlight 5 beta新特性探索系列:2.在XAML代码中设置断点和Binding绑定调试【附带源码实例】
- Silverlight 5 beta新特性探索系列:8.Silverlight 5中自定义扩展标记
- Silverlight 5 beta新特性探索系列:3.Silverlight5中的文字增进控制【附带实例源码】
- Silverlight 5 beta新特性探索系列:8.Silverlight 5中自定义扩展标记
- Silverlight 5 beta新特性探索系列:3.Silverlight5中的文字增进控制【附带实例源码】