2010-04-09 56 views
0

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

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

回答

1

在ASP.NET发射了额外的线程的主要问题是,该框架可以从下您翻录的AppDomain出来(例如,如果有人编辑web.config文件或IIS决定回收工作进程)。如果发生这种情况,您的工作线程也会被终止,您无法真正控制它。

如果你不认为这会成为一个问题,那么它其实并不重要,但我认为,一个更好的解决方案很可能会火起来的工作在一个单独的进程,然后可以监视从您的Web应用程序。

这样,如果有人编辑了web配置,或者IIS回收了辅助进程,导入过程就会独立运行,您不必担心。

+0

1产卵从ASP .NET线程是无意义的,因为父线程可以被杀死任何第二。 – 2010-04-09 11:50:33

+0

感谢您的指导。 Feed上传将在事务处理下运行,因此如果该流程回收,Feed应该回滚。 – 2010-04-13 09:37:11

1

这里是我的方法:

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