无需等待即可启动任务

时间:2013-10-12 11:28:09

标签: c# asp.net-mvc parallel-processing task

我正在使用asp.net mvc,我希望在他到达网站的主页时从数据库中缓存一些有关用户的数据。 因此,当用户请求主页时,我想调用异步方法,该方法进行数据库调用和缓存数据。

任何这样做的例子都会很棒。

4 个答案:

答案 0 :(得分:20)

public class HomeController : Controller
{
  public ActionResult Index()
  {
    ViewData["Message"] = "Welcome to ASP.NET MVC!";

    Task.Run(()=> DoSomeAsyncStuff());

    return View();
  }

  private async void DoSomeAsyncStuff()
  {

  }
}

答案 1 :(得分:2)

我会说你通过这个调用缓存方法:

HostingEnvironment.QueueBackgroundWorkItem(x=> CacheData());

这样,你就不会让主页请求等待,所以用户可以立即看到主页,而缓存则发生在服务器的后台。

PS:但是,是的,您可能会轻微冒应用域名回收,从而搞砸了您的缓存线程。

答案 2 :(得分:2)

对于 .NET Core 我使用这个

_ = Task.Run(() => SomeAsyncFunction());

答案 3 :(得分:0)

ThreadPool.QueueUserWorkItem((Action<object>)state =>
{
    //do your async work
}, null);

Task.StartNew(...)

(对不起,简单回答,这可能会让你走上正轨,或者有人可以编辑这个以显示完整的例子,请?)