在ASP.NET中使用Thread或Thead Pool的好方法是什么

时间:2010-04-09 09:26:30

标签: asp.net multithreading

我正在开发一个组件来在ASP.NET中创建定制的BulkImport功能。下划线此组件将使用SqlBulkCopy类。将有不同的文件格式。该文件将导入到中间表中,然后转换为所需的表。上传文件可能很大,可能需要几分钟才能完成处理。我想使用Thread或Thead Pool进行异步处理。能否请你提出一个解决这个问题的好方法。

注意:这是一个内部应用程序,在任何给定时间最多2-5人使用。

2 个答案:

答案 0 :(得分:1)

在ASP.NET中启动其他线程的主要问题是框架可以从您下面撕掉AppDomain(例如,如果有人编辑web.config或IIS决定回收工作进程)。如果发生这种情况,您的工作线程也会被终止,您无法真正控制它。

如果您认为这不是问题,那么这并不重要,但我建议更好的解决方案可能是在一个单独的流程中启动工作,然后您可以从中监控你的网络应用程序。

这样,如果有人编辑了Web配置,或者IIS回收了工作进程,则导入过程是独立运行的,您不必担心。

答案 1 :(得分:1)

这是我的方法:

  • 要求用户粘贴到文件的unc路径。将此路径保存到sql中的表中。
  • 编写Windows服务以检查路径表中的新条目。找到新条目时,开始处理该文件。使用进度和检查标记(下面)定期更新表格
  • 在浏览器中有一个ajax回调,用于检查表的进度,以百分比形式返回给客户端。允许客户端通过向表中添加一些标志来停止该过程。