Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.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
Asp.net core 是否允许在ASP.NET核心控制器中使用Task.Run?_Asp.net Core_Asp.net Core 2.1 - Fatal编程技术网

Asp.net core 是否允许在ASP.NET核心控制器中使用Task.Run?

Asp.net core 是否允许在ASP.NET核心控制器中使用Task.Run?,asp.net-core,asp.net-core-2.1,Asp.net Core,Asp.net Core 2.1,场景:我有一个带有“删除”ASP.NET核心控制器操作的web服务。该实现包括两个步骤:一个步骤是其他操作无法再看到已删除的数据,另一个步骤是执行实际删除的长时间运行的第二步 使用任务可以吗?运行第二个操作的,不要等待它,所以很快返回调用方?我知道此任务可能会由于应用程序关闭而丢失,但是否允许它使用任务将工作卸载到后台。在ASP.NET Core中运行,永远不要等待生成的任务 我知道此任务可能会由于应用程序关闭而丢失,但是否允许它使用task.NET Core中运行的task.Run将工作卸载到

场景:我有一个带有“删除”ASP.NET核心控制器操作的web服务。该实现包括两个步骤:一个步骤是其他操作无法再看到已删除的数据,另一个步骤是执行实际删除的长时间运行的第二步

使用
任务可以吗?运行第二个操作的
,不要等待它,所以很快返回调用方?我知道此任务可能会由于应用程序关闭而丢失,但是否允许它使用
任务将工作卸载到后台。在ASP.NET Core中运行
,永远不要等待生成的任务

我知道此任务可能会由于应用程序关闭而丢失,但是否允许它使用task.NET Core中运行的task.Run将工作卸载到后台,并且从不等待生成的任务

哦,当然,没有什么能阻止这件事。NET和ASP.NET允许您使用
Task.Run
,响应将立即返回给用户(假设您忽略从
Task.Run
返回的任务)

可以使用Task.Run执行第二个操作吗?不要等待它,所以很快返回调用方

你说你知道任务可能会在应用程序关闭时丢失。这是真的;因此,第二次删除可能永远不会发生,并且不会有错误或日志消息通知您这一事实。此外,由于该任务被忽略,因此如果该任务失败,将不会有任何通知,因此,如果删除代码有问题,则不会有日志或任何内容通知您常规失败。如果你同意的话,那么用火和遗忘就可以了

在ASP.NET Core上,您甚至不需要
任务;您只需调用执行第二次删除操作的(异步)方法,然后忽略该任务,而不是等待它


简单地忽略任务是可行的(有或没有
Task.Run
),但这确实会产生消极的副作用,即ASP.NET根本不知道卸载的工作。所以我推荐。通过注册,仍然可能会丢失任务,但注册它们会减少丢失任务的机会。

检查后台任务:@Moho后台任务用于应始终运行的后台服务,例如类似cronjob的任务。它们不是为了控制器的一次性工作。我们要谈多久?10秒?1小时?一天?大约两到五分钟。但是我在理论上也对这个问题感兴趣。@DR.你错了。检查该部分。您还可以使用一些后台任务框架(如Hangfire)来支持后台任务的可伸缩性,并在服务器停止和出现错误时重试。