2010-04-09 77 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回調函數,用於檢查表的進度,並以百分比形式返回給客戶端。允許客戶端通過向表中添加一些標誌來停止進程。
相關問題