繁体   English   中英

从ASP.NET启动和停止线程

[英]starting and stopping threads from ASP.NET

我必须启动一个线程来在后台执行一些长时间运行的任务(即使关闭了浏览器),而不必等待网页的按钮单击事件的响应。

如果用户希望这样做,我也需要稍后再停止。

我怎样才能做到这一点?

是否可以在数据库中存储线程的id并在以后中止?

我是否需要进行异步webservicewcf调用来实现此目的?

在这种情况下,如果以后需要如何停止长时间运行的任务?

提前致谢。

我建议您的ASP.Net应用程序将请求写入数据库表,并使用Windows服务处理这些请求。

我将使用一个表对新任务进行排队,并使用一个单独的表来管理正在运行的任务。 第二个表可用于报告进度或终止正在运行的任务。 任务完成后,您可以将它们移动到包含摘要数据的第三表中,以供以后分析。

数据库还为您提供了持久性,因此,如果服务器崩溃,Windows服务可以自动重启任务,而无需用户重新提交它们。

如果您有许多排队的任务,则可以在多个应用程序服务器上生成Windows服务以加快处理速度,所有这些操作都通过数据库进行控制。

您可以使用backgroundworker类:

实例化后台工作程序,定义DoWork事件处理程序和RunWorkerCompleted事件处理程序。 然后使用RunWorkerAsync方法开始操作。 您可以使用CancelAsync方法取消操作。

也许您可以将对您的工作程序的引用存储在缓存中或应用程序中(如果是特定于用户的,则可以存储在Session中)以在需要取消时检索它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM