【发布时间】:2009-11-30 18:20:50
【问题描述】:
我们有一个 ASP.Net 应用程序,它让管理员可以处理大量记录并对其执行操作。例如,我们有一个“波兰数据”任务,管理员可以执行该任务来清理记录的数据(例如重新格式化电话号码、社会保险号码等)。当对少量记录执行时,任务完成相对较快.但是,当用户对较大的记录集执行任务时,该任务可能需要几分钟或更长时间才能完成。因此,我们希望使用某种异步模式来实现这些类型的任务。例如,我们希望能够启动任务,然后使用 AJAX 轮询来提供进度条和状态信息。
我一直在研究使用 BackgroundWorker 类,但我在网上阅读了一些让我停下来的东西。我很想就此获得一些额外的建议。
例如,我知道 BackgroundWorker 实际上会使用当前应用程序的线程池。就我而言,该应用程序是一个 ASP.Net 网站。我已经读过这可能是一个问题,因为当应用程序回收时,后台工作人员将被终止。我上面提到的一些工作可能需要 3 分钟,但其他工作可能需要几个小时。
此外,我们可能有数百名管理员在白天都在执行类似的操作。 ASP.Net 应用程序线程池是否能够有效地处理所有这些后台作业,同时仍执行正常的请求处理?
所以,我正在尝试确定使用 BackgroundWorker 类和方法是否适合我们的需求。我应该寻找替代方法吗?
感谢和抱歉这么长的帖子!
凯文
【问题讨论】:
标签: asp.net multithreading backgroundworker