我需要异步调用来自Web API控制器操作的进程,因此操作不会等待进程完成返回。这是怎么做到的?我试图避免编写消息队列。
这是我要做的事情的一个例子
public JsonResult Index(string key)
{
//call some process here but don't wait for it to finish,
//this would be something like logging or sending an email
// this returns immediately
return new JsonResult
{
...
};
}
答案 0 :(得分:1)
Task.Run()或ThreadPool.QueueUserWorkItem()
对于日志记录,如果使用log4net,则可能需要编写异步日志追加器。对于电子邮件,我会考虑使用drop目录并让SMTP服务器异步接收邮件。这两种方法都可以消除控制器操作的复杂性,并将其本地化到您正在使用的组件中。
答案 1 :(得分:1)
如果您有可能丢失后台工作,可以使用Task.Run()
。如果重要,请使用QueueBackgroundWorkItem
。有关详细信息,请查看此内容。
答案 2 :(得分:1)