Asp.net MVC 4 异步方法
来源:互联网 发布:淘宝冷门类目2017 编辑:程序博客网 时间:2024/06/13 21:51
今天我们来看一下,同样功能在 Asp.net MVC 4 下的实现,基于.net framework 4.5 下的async支持,让我们的代码更加简单,看下面片断代码名叫Index的Action方法:
public async Task<ActionResult> 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<string> 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并行异步,注意async与await关键字,在.NET 4.5 与 Visual Studio 2012下可用。你只可以使用await关键字同时标注了async的方法。使用异法的HttpClient来替代WebClient类,await关键字运用到HttpClient的异步方法上。使用Task.WhenAll等待所有任务结束。我们知道TPL中还提供了CancellationToken,MVC框架中也提供了AsyncTimeout特性,看面下面示例代码:
[AsyncTimeout(100)]
[HandleError(ExceptionType = typeof(TimeoutException),View = "Error")]
public async Task<ActionResult> 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毫秒,并且我们可以传递CancellationToken的参数给具体的Task。 最后把结果返回给View,实际你可以自行Debug看其中过程。
希望对您Web开发有帮助。
阅读全文
0 0
- Asp.net MVC 4 异步方法
- Asp.net MVC 4 异步方法
- Asp.net MVC 异步处理。
- 异步控制器, 从ASP.NET MVC 2到4
- Asp.net MVC 4 动作方法结果
- ASP.NET MVC的异步编程
- ASP.NET MVC Controller异步机制
- ASP.NET MVC异步数据提交
- ASP.NET MVC异步加载分部视图
- Asp.Net MVC扩展方法
- ASP.NET MVC(4)
- ASP.NET MVC(4)
- ASP.NET服务器端异步Web方法
- ASP.NET服务器端异步Web方法
- ASP.NET服务器端异步Web方法
- ASP.NET服务器端异步Web方法
- 使用ASP.NET MVC Futures 中的异步Action
- 使用ASP.NET MVC Futures 中的异步Action
- html中的select下拉框具有输入功能
- JDBC API
- 类的拷贝、赋值与销毁
- Java中设置session超时(失效)的三种方法
- 判断一个值是否在一棵二叉树中。(注意多测几个值,看是否都能找到)
- Asp.net MVC 4 异步方法
- pat-a1105. Spiral Matrix (25)
- redis 终端命令查看
- 19-service之在过滤器中使用服务
- NIO之一
- 报了蛋糕班学习
- JPA实现分页
- 【备忘】2017最新传智播客黑马java 32期基础就业班视频教程
- Java8中的日期与时间处理