[英]starting and stopping threads from ASP.NET
我必须启动一个线程来在后台执行一些长时间运行的任务(即使关闭了浏览器),而不必等待网页的按钮单击事件的响应。
如果用户希望这样做,我也需要稍后再停止。
我怎样才能做到这一点?
是否可以在数据库中存储线程的id
并在以后中止?
我是否需要进行异步webservice
或wcf
调用来实现此目的?
在这种情况下,如果以后需要如何停止长时间运行的任务?
提前致谢。
我建议您的ASP.Net应用程序将请求写入数据库表,并使用Windows服务处理这些请求。
我将使用一个表对新任务进行排队,并使用一个单独的表来管理正在运行的任务。 第二个表可用于报告进度或终止正在运行的任务。 任务完成后,您可以将它们移动到包含摘要数据的第三表中,以供以后分析。
数据库还为您提供了持久性,因此,如果服务器崩溃,Windows服务可以自动重启任务,而无需用户重新提交它们。
如果您有许多排队的任务,则可以在多个应用程序服务器上生成Windows服务以加快处理速度,所有这些操作都通过数据库进行控制。
您可以使用backgroundworker类:
实例化后台工作程序,定义DoWork事件处理程序和RunWorkerCompleted事件处理程序。 然后使用RunWorkerAsync方法开始操作。 您可以使用CancelAsync方法取消操作。
也许您可以将对您的工作程序的引用存储在缓存中或应用程序中(如果是特定于用户的,则可以存储在Session中)以在需要取消时检索它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.