代码之家  ›  专栏  ›  技术社区  ›  Amit Rai Sharma

在ASP.NET中使用线程或线程池的好方法是什么

  •  0
  • Amit Rai Sharma  · 技术社区  · 14 年前

    我正在开发一个组件来在ASP.NET中创建定制的批量导入功能。下划线此组件将使用SqlBulkCopy类。将有不同的文件格式。该文件被导入中间表,然后被转换为所需的表。上载文件可能很大,可能需要几分钟的处理时间。我想使用线程或线程池来做异步处理。你能提出一个处理这个问题的好方法吗。

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

    2 回复  |  直到 14 年前
        1
  •  1
  •   Dean Harding    14 年前

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

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

    这样,如果有人编辑web配置,或者IIS回收工作进程,那么导入进程将独立运行,您不必担心。

        2
  •  1
  •   James Westgate    14 年前

    我的方法是:

    • 要求用户粘贴到文件的unc路径。将此路径保存到sql中的表中。
    • 在浏览器中有一个ajax回调来检查表的进度,并以百分比的形式返回给客户端。允许客户端通过向表中添加一些标志来停止进程。