【问题标题】:How to put code on thread in ASP.NET MVC app?如何在 ASP.NET MVC 应用程序中将代码放在线程上?
【发布时间】:2013-12-06 20:08:59
【问题描述】:

我有以下 ActionResult 方法:

public ActionResult MyMethod(string someXml)
{
  //parse someXml
  return new HttpStatusCodeResult(HttpStatusCode.Ok);
}

我需要立即返回 HTTP 状态码。如果我把return放在xml解析之前,解析就不会发生。我可以将解析放到另一个线程上,以便立即发送返回吗?

它会依次看起来像:

//put xml parsing into method, create new thread and call parsing method
//do return

在 ASP.NET MVC 应用程序中运行另一个线程是否有任何副作用?还是有更好的选择?

【问题讨论】:

  • 解析完成后还需要返回什么给客户端吗?
  • 不。只是 Http 返回码。

标签: .net asp.net-mvc multithreading c#-4.0


【解决方案1】:

由于这就像“一劳永逸”类型的场景,真正需要的只是启动另一个线程:

public ActionResult MyMethod(string someXml)
{
    Task.Factory.StartNew( () => {
        //parse someXml
    } );

    return new HttpStatusCodeResult(HttpStatusCode.Ok);
}

ASP.Net MVC 提供了一个AsyncController,但这不适用于这里。当您想要保留长时间运行的操作的请求并在完成后向客户端返回某些内容而不阻塞应用程序池线程时,这很有用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-08
    • 1970-01-01
    • 1970-01-01
    • 2012-09-06
    • 1970-01-01
    • 2019-03-18
    相关资源
    最近更新 更多