2010-02-10 138 views
3

我正在編寫一個ASP.NET Web應用程序,它將CD的內容複製到網絡共享。我需要定期檢查複印作業是否完成。檢查文件是否完成複製

這樣做的一種方法是檢查網絡共享文件夾,以查看自上次檢查後文件大小是否發生了變化,但似乎有點不妥。有沒有人有更好的想法如何做到這一點?

由於提前, 斯泰恩

EDIT
一些更多的解釋:
基本上我調用JsonResult動作方法每隔5秒,被稱爲的getStatus(源,目的地)。此方法需要檢查以下內容:
- 如果源目錄仍爲空,則複製將無法啓動 - >返回狀態「正在等待」
- 如果源目錄中包含文件,則複製可以啓動-_>調用複製方法+返回狀態「複製」
- 如果目標目錄包含文件,並且文件大小保持不變,則複製完成 - >返回狀態「已完成」

謝謝!

+0

好問題。我通過跟蹤上次修改日期並查看它是否發生了變化來做到這一點,但我的方法看起來和您的方法一樣狡猾。我很想看看發佈的內容。 – David 2010-02-10 14:06:47

+2

澄清請:(1)您是否在服務器端複製CD? (2)你打算從客戶端瀏覽器檢查複印作業嗎? – Dewfy 2010-02-10 14:09:14

回答

2

在您的web應用程序中,使用阻止文件複製操作,例如File.Copy,但運行在後臺線程中執行復制的過程。在你的後臺線程中,寫入狀態信息(例如,「9個文件中的3個完成」或「我完成了!」或「發生錯誤:...」)到某個共享對象中(靜態變量,對象,數據庫,Session .. )。然後寫一些Status.aspx頁面,其中顯示了該共享對象的內容。

0

使用2種方法從客戶端的JavaScript端創建Web服務:StartCopying,CheckStatus。

  • StartCopying的實現可以開始backgorund線程複製,或具有[SoapDocumentMethod(單向=真)]即意味着方法立即返回,而無需等待成就。
  • CheckStatus只是檢查你上面描述的內容,並返回到任務的客戶端狀態。