1. xxxAsync/xxxCompleted 组合方式异步,xxxCompleted 就是他的回调函数,在执行完 xxxAsync 后调用xxxCompleted 。
使用 异步方式必须继承AsyncController 控制器:
Async 异步方式通过 Controller的属性 AsyncManager 进行赋值 回调,看下面代码:
public class AppController : AsyncController { public void ArticleAsync(string name) { AsyncManager.OutstandingOperations.Increment(); Task.Factory.StartNew(() => { AsyncManager.Parameters["content"] = "hello world"; AsyncManager.OutstandingOperations.Decrement(); }); } public ActionResult ArticleCompleted(string content) { return Content(content); } }
2.Task返回值。
采用第一种方式异步我们需要为一个Action实现两个方法, 所以在MVC4中 定义了一个返回值类型为Task的异步方法。
对于回调内容的显示通过调用Task的ContinueWith<ActionResult> 方法进行注册
public Task<ActionResult> ArticleTask(string name) { return Task.Factory.StartNew(() => { AsyncManager.Parameters["content"] = "hello world"; }).ContinueWith<ActionResult>(task => { string context = (string)AsyncManager.Parameters["content"]; return Content(context); }); }
时间: 2024-12-29 12:35:59