博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Asp.net MVC 4 异步方法
阅读量:7138 次
发布时间:2019-06-28

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

今天我们来看一下,同样功能在  下的实现,基于.net framework 4.5 下的async支持,让我们的代码更加简单,看下面片断代码名叫Index的Action方法: 

public async Task
IndexAsync()
{
var cnblogsTask = GetStringAsync("http://www.cnblogs.com");
var myblogTask = GetStringAsync("http://www.cnblogs.com/wintersun");
 
// Asynchronously wait for them all to complete.
await Task.WhenAll(cnblogsTask, myblogTask);
 
Operations translations = new Operations() {
FirstOperation = cnblogsTask.Result, SecondOperation = myblogTask.Result };
 
return View(translations);
}

 

private static async Task
GetStringAsync(string uri
, CancellationToken cancelToken = default(CancellationToken))
{
using (HttpClient httpClient = new HttpClient())
{
var response = await httpClient.GetAsync(uri, cancelToken);
return (await response.Content.ReadAsStringAsync());
}
}

上面的代码我们实现多个Task并行异步,注意与关键字,在.NET 4.5 与 Visual Studio 2012下可用。你只可以使用await关键字同时标注了async的方法。使用异法的来替代类,await关键字运用到的异步方法上。使用等待所有任务结束。我们知道TPL中还提供了,MVC框架中也提供了特性,看面下面示例代码: 

[AsyncTimeout(100)]
[HandleError(ExceptionType = typeof(TimeoutException),View = "Error")]
public async Task
IndexCancleAsync()
{
var cancellationToken = new CancellationToken(false);
var cnblogsTask = GetStringAsync("http://www.cnblogs.com", cancellationToken);
var myblogTask = GetStringAsync("http://www.cnblogs.com/wintersun", cancellationToken);
 
await Task.WhenAll(cnblogsTask, myblogTask);
 
Operations translations = new Operations()
{
FirstOperation = cnblogsTask.Result,
SecondOperation = myblogTask.Result
};
 
return View(translations);
}

我们设置异步超时为100毫秒,并且我们可以传递的参数给具体的Task。 最后把结果返回给View,实际你可以自行Debug看其中过程。

你可能感兴趣的文章
计算机网络笔记
查看>>
mysql 查重复数据
查看>>
【c学习-10】
查看>>
GNU make 总结 (四)
查看>>
poj1611(并查集简单应用)
查看>>
python 文件读写模式r,r+,w,w+,a,a+的区别(附代码示例)
查看>>
asp.net web 通过IHttpAsyncHandler接口进行消息推送
查看>>
wcf 使用sqlMembership证书认证
查看>>
MogoDB安装与使用(Windows篇)
查看>>
Objective-C Runtime 运行时之一:类与对象
查看>>
[Python]打开文件的模式
查看>>
UVALive5429 UVA382 POJ1528 HDU1323 ZOJ1284 Perfection
查看>>
HDU1195 ZOJ2416 Open the Lock【BFS】
查看>>
使用GDAL获取网络数据
查看>>
数据库事务的四个隔离级别
查看>>
Hibernate初学
查看>>
解决 MySQL 分页数据错乱重复
查看>>
C#~异步编程在项目中的使用
查看>>
我的第一次作业
查看>>
用python实现数字图片识别神经网络--启动网络的自我训练流程,展示网络数字图片识别效果...
查看>>