MVC4 Action 两种异步方式

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);
              });
        }
原文地址:https://www.cnblogs.com/dragon-L/p/5256406.html