我正在向网络API提交数据。然后,我必须运行机器学习算法,该算法使用提交的所有数据,并根据扫描找到最佳参数。但是,没有理由用户必须等待此过程完成,我希望我的web api方法返回,而后端web api正在运行。异步那样做吗?或者也许Task.Run?我对C#的精彩世界相对较新。
答案 0 :(得分:2)
你不会说长期任务需要多长时间。但是,在Web API的后台运行一个长时间运行的进程并不是一个好主意。大多数Web服务器都认为任务需要很短的时间,并且可以随时重启应用程序域等。
如果任务是< 90秒然后你可以考虑使用 HostingEnvironment.QueueBackgroundWorkItem
这将阻止任何类型的应用程序域重启90秒。
或者如果任务需要更长时间,那么使用某种排队方法,可能是Windows服务或HangFire。我使用Hangfire进行长时间运行的SignalR进程,以便向用户更新进程状态,并且运行良好。
答案 1 :(得分:-1)
我建议使用Task.Run
,代码将在新线程中执行,而不是让用户等待。
Task.Run(() =>
{
//Your code
});