MVC4 Action 两种异步方式

Posted dragon.net

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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);
              });
        }

 

以上是关于MVC4 Action 两种异步方式的主要内容,如果未能解决你的问题,请参考以下文章

jQuery ajax请求struts action实现异步刷新

如何监控 MVC4 中的异步/等待死锁?

mvc4中 @Url.Action 如何读取javascript变量的值

如何在 MVC4 中执行异步调用操作方法

ASP.NET mvc4 Controllder 同步还是异步

.net mvc4如何设置自定义路由