Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在ASP.NET MVC 3中生成异步结果?_C#_Asp.net Mvc 3 - Fatal编程技术网

C# 如何在ASP.NET MVC 3中生成异步结果?

C# 如何在ASP.NET MVC 3中生成异步结果?,c#,asp.net-mvc-3,C#,Asp.net Mvc 3,我希望JsonResult中有这样一个东西,他们在收到来自浏览器[客户端]的请求后响应,并在完成任务之前快速响应 表示请求在任务完成之前响应,并运行线程来完成任务 有人能告诉我在asp.net MVC中实现这一点的代码吗?AJAX对您的场景来说还不够吗 $.getJSON('@Url.Action("Foo")', function(result) { // once the task completes this callback will be executed }); // flo

我希望JsonResult中有这样一个东西,他们在收到来自浏览器[客户端]的请求后响应,并在完成任务之前快速响应

表示请求在任务完成之前响应,并运行线程来完成任务


有人能告诉我在asp.net MVC中实现这一点的代码吗?AJAX对您的场景来说还不够吗

$.getJSON('@Url.Action("Foo")', function(result) {
    // once the task completes this callback will be executed
});
// flow continues to execute normally
在服务器端:

public ActionResult Foo()
{
    // TODO: some task
    return Json(someResult, JsonRequestBehavior.AllowGet);
}
如果此任务是I/O密集型任务,则可以利用和I/O完成端口

如果您有火灾和遗忘场景,您可以简单地启动任务并立即从控制器返回:

public ActionResult StartTask()
{
    // Fire the task
    Task.Factory.StartNew(() => 
    {
        // TODO: the task goes here
        // Remark: Ensure you handle exceptions
    });

    // return immediately
    return Json(
        new { Message = "Task started" }, 
        JsonRequestBehavior.AllowGet
    );
}