Asp.net core 决定大流程并通知用户

Asp.net core 决定大流程并通知用户,asp.net-core,Asp.net Core,我需要在服务器端进行一些处理 当用户选择大量数据进行处理时(比如说,在数据库中插入、更新、删除以及文件读/写),需要花费大量时间 我正在使用c#和.net核心mvc web应用程序 在这种情况下,是否可以确定流程何时需要的时间超过某个确定的时间,将其运行到后台(或者说,如果可能,将流程转移到另一个工具),并通知用户这将需要一些时间,一旦完成,您将收到通知(该通知不需要是实时的。我们可以通过邮件发送) 那么有什么机制可以做到这一点吗?您可以继续创建一个作业来处理数据,您可以尝试,它允许您在您的as

我需要在服务器端进行一些处理

当用户选择大量数据进行处理时(比如说,在数据库中插入、更新、删除以及文件读/写),需要花费大量时间

我正在使用c#和.net核心mvc web应用程序

在这种情况下,是否可以确定流程何时需要的时间超过某个确定的时间,将其运行到后台(或者说,如果可能,将流程转移到另一个工具),并通知用户这将需要一些时间,一旦完成,您将收到通知(该通知不需要是实时的。我们可以通过邮件发送)


那么有什么机制可以做到这一点吗?

您可以继续创建一个作业来处理数据,您可以尝试,它允许您在您的aspnet核心应用程序中创建后台作业。

您可以继续创建一个作业来处理数据,您可以尝试,这允许您在aspnet核心应用程序中创建后台作业。

我认为您无法实现自己的目标。另一方面,您可以使用并行foreach更快地处理更多数据

例:

属性MaxDegreeOfParallelism定义了最多要使用多少线程。我建议你从2开始,一个接一个地增加,看看什么最适合你

并行foreach将使用更多线程来处理数据

如果parallel foreach无法解决您的问题,您可以使用一种策略,该策略包括接收用户数据,假设此处理将花费很长时间,将此数据按原样存储在数据库或任何其他类型的存储中,给您的用户一个带有事务id和文本的回复,解释这将需要很长时间,并且响应将通过电子邮件发送。通过这样做,您将需要构建另一个服务来处理这些事务,并通过电子邮件向用户发送您认为必要的任何信息

另一种可能性是,您可以创建一种方法来根据事务id检查处理状态,而不是通过电子邮件通知用户,并执行池策略,这样用户甚至不会注意到处理正在后台进行

希望你成功


致以最诚挚的问候

我想你做不到你想要的。另一方面,您可以使用并行foreach更快地处理更多数据

例:

属性MaxDegreeOfParallelism定义了最多要使用多少线程。我建议你从2开始,一个接一个地增加,看看什么最适合你

并行foreach将使用更多线程来处理数据

如果parallel foreach无法解决您的问题,您可以使用一种策略,该策略包括接收用户数据,假设此处理将花费很长时间,将此数据按原样存储在数据库或任何其他类型的存储中,给您的用户一个带有事务id和文本的回复,解释这将需要很长时间,并且响应将通过电子邮件发送。通过这样做,您将需要构建另一个服务来处理这些事务,并通过电子邮件向用户发送您认为必要的任何信息

另一种可能性是,您可以创建一种方法来根据事务id检查处理状态,而不是通过电子邮件通知用户,并执行池策略,这样用户甚至不会注意到处理正在后台进行

希望你成功


致以最诚挚的问候

是否只有在流程花费的时间超过指定时间时,才有办法创建作业?有什么机制吗?只有当流程花费的时间超过指定的时间时,才有办法创建作业吗?有什么机制吗?
Parallel.ForEach([list of entities],
                 new ParallelOptions { MaxDegreeOfParallelism = 2 },
                 [entity] =>
                 {
                   //YOURCODE PROCESSING THE ENTITY (INSERT,UPDATE,DELETE)
                 }
);