2012-07-24 68 views
0

Windows服務 - C# - VS2010按順序重命名文件擴展名

我有多個FileWatcher服務實例。每個人在目錄中查找不同的擴展名。我有一個單獨的路由器服務,用於監視zip文件的目錄,並將擴展名重命名爲服務查看的值之一。

例子:

問題目錄(所有FileWatcher服務監視此目錄)包含以下文件:

a.zip,b.zip,c.zip

FileWatcher1查找的擴展* .000,FileWatcher2看重的是擴展名爲* 0.001,FileWatcher3尋找的*擴展0.002

路由器將看到.zip文件,並更改上的zip文件的文件擴展名,但它應該保持序列爲了d將相同數量的工作傳遞給每個FileWatcher。

另外,如果有兩個zip文件被丟棄,它會改變a.zip - > a.000和b.zip - > b.001,但是如果5分鐘過去並且另一批zip文件被刪除,它應該知道將下一個文件重命名爲* .002。

我有一切工作正常,但現在我需要實現連續部分到路由器,我不知道最好的實現方式(目前路由器正在改變每個擴展到* .000因此只有一個FileWatcher獲得工作)。我知道這可能被認爲是一種便宜的方式,但這是我們目前真正需要的。任何幫助,將不勝感激。

回答

0

也許是一種不同的看待它的方式。你有沒有想過有一個單一的觀察者,然後使用線程池?我提出這個建議的原因是,你將不得不開始考慮這些領域的規模和複雜性,以充分分配工作。您可能會開始將更多工作推向.000,因爲當它仍然忙於處理來自第一個作業的大量數據時,它將在下一行,而.001在處理小文件時可能是免費的。

如果你真的想解決下一個擴展的問題,爲什麼不保留一個靜態變量與下一個分機號碼。我不是100%確定路由器Filewatcher是否會在一個接一個地看到新文件時運行多個線程,但我不這麼認爲。如果發生這種情況,那麼訪問靜態變量時就需要放置一些線程安全代碼。

+0

謝謝。所有將被丟棄的文件的大小和數據都不是很大,但是我們已經討論了創建線程池的想法。這件作品更多的是一個概念證明,它可以在沒有太多工作的情況下快速完成工作。我實現了這個靜態變量,不知道爲什麼我沒有早點想到它,但是此刻我的思想已經被埋在其他的火裏,並且有一點腦殘。感謝您的意見,但是您讓我回到了正確的軌道上。 :) – r584 2012-07-24 19:48:24

+0

也適用於我。我幾天前發佈了一個與這個問題無關的問題的評論。我責怪太多工作:) – Graymatter 2012-07-24 20:17:02

0

路由器是否可以保留一個計數器並對每個新文件執行mod 3(或N,其中N是觀察者的數量)?