C# 如何在asp.net中实现长时间运行的任务
我正在实现一个ASP.NET4.0应用程序,在该应用程序中,单击按钮将评估1000条规则。评估所有规则需要10分钟 如何在网页中显示进度。 这应该允许用户执行其他任务,如取消等。 评估所有规则后,需要更新页面中的数据,并显示一条消息C# 如何在asp.net中实现长时间运行的任务,c#,asp.net,multithreading,progress,long-running-processes,C#,Asp.net,Multithreading,Progress,Long Running Processes,我正在实现一个ASP.NET4.0应用程序,在该应用程序中,单击按钮将评估1000条规则。评估所有规则需要10分钟 如何在网页中显示进度。 这应该允许用户执行其他任务,如取消等。 评估所有规则后,需要更新页面中的数据,并显示一条消息 我如何在ASP.Net中实现这一点?您可以使用微软的signalr框架实现这一点。我们这样做是为了在我们的产品中进行安装过程。这也是一个长期运行的过程。由于产品是开源的,您可以在以下位置检查实现: 希望这有帮助。在这种情况下,我个人的建议是使用简单的ajax请求
我如何在ASP.Net中实现这一点?您可以使用微软的signalr框架实现这一点。我们这样做是为了在我们的产品中进行安装过程。这也是一个长期运行的过程。由于产品是开源的,您可以在以下位置检查实现:
希望这有帮助。在这种情况下,我个人的建议是使用简单的ajax请求 在这个示例中,您可以调用第一个加载调用,它将负责初始化任务 将会话a中的值保存到示例fantasy name会话(“taksprogress”)=“0”中的此任务 您将使用此值更新进度条 第二,启动页面上的计时器,每五秒钟检查一次,并仅报告更新检查会话的实际状态(“任务进度”) 当它返回您在该点定义的值时,您将向客户端显示您的消息 它将帮助你更多,而且实现起来非常简单。 请注意,如果要使用ashx文件,则必须启用以读/写模式访问会话的正确权限。 还有许多其他方法可以使用类、json响应(包括文本消息等)来完成此操作:) 我希望能帮助你选择正确的选择方式 Hi Shiva,根据您最后的评论,最好选择ajax在这种情况下假设这种情况:
请提出一个具体的问题,并向我们展示您的代码。这实际上相当困难。问题是,如果您通过asp.net和IIS运行10m请求,则在生成它的HTTP请求完成后,它可以随时终止。因此,您需要将服务器上的服务与asp.net分开,并使其以某种方式与主web服务器应用程序通信。此外,在asp.net页面中这样做是一个坏主意。让页面将请求排队到将运行该请求的服务。确保在用户按下F5时,服务不会执行两次10分钟任务。然后,进度条可以监控服务的进度。有很多方法,ajax请求/s、多线程、服务器上的服务,这取决于您需要的类型。例如,您可以进行一次ajax调用,调用一个页面,该页面负责在多线程中执行所有规则验证(如果可能),连接到服务器服务并从中获得响应,等等……您可以给我们提供更多信息吗?评估是按特定顺序完成的,还是可以分为多个任务/线程,这样可以减少总的工作时间?您告诉我们的越多,我们就可以帮助您感谢回复。所有规则都需要按特定顺序进行评估。但是,用户应该可以随时取消规则评估过程。当规则评估完成/中止时,需要使用评估规则结果更新同一页面中的其他一些数据。谢谢。这里还有一个问题,页面中的数据需要保存到数据库中,然后才应该开始规则评估。如果是Ajax调用,我如何实现这一点?检查响应更新:)