2011-08-18 46 views
1

我有一個文件夾將包含將由Web服務創建的臨時文件。我想通過命令行通過.exe程序轉換文件。現在,我已經生成了將創建文件並存儲在一個特定文件夾中的Web服務。是否可以創建一個C#Windows服務來檢測Windows XP上的新文件創建?

下面是這種情況:

  1. Web服務從我的移動應用程序接收AMR字節的數據。
  2. Web服務將刪除文件夾中存在的所有文件。 (刪除上一輪生成的.amr文件和.mp3文件)
  3. Web服務在該文件夾中創建新的.amr文件。
  4. Windows服務檢測到存在創建的新文件。它調用converter.exe。完成後,它將在同一個文件夾中創建.mp3文件。

現在,我對step1-3沒有任何問題。問題是第4步,我需要將.amr文件轉換爲.mp3文件。爲了做到這一點,我需要將一些dos命令傳遞給converter.exe。我發現我無法從我的web服務中完成它,所以我正在考慮創建C#Windows服務來監視存儲文件的文件夾。創建新文件後,是否可以創建能夠檢測到新文件創建並運行converter.exe的Windows服務?我在互聯網上搜索過,發現我可能是用FileSystemWatcher創建Windows Service,但我不確定它是否可行。

我試圖從web服務執行converter.exe時發現的原因是關於權限。我做了一切,但仍然無法成功(使用Web Service,converter.exe在任務管理器的進程列表中顯示爲本地系統,但由於某種安全原因,它不會被執行......)希望有當我嘗試使用Windows服務執行converter.exe時,將無安全問題。

預先感謝所有的答案和建議:)

回答

6

System.IO.FileSystemWatcher會做的伎倆。 Created事件會告訴你什麼時候在你正在觀看的目錄中創建了一個文件。要開始您的轉換程序,請參閱System.Diagnostics.Process.Start方法。這兩個應用都可以在Windows服務中正常工作。

+0

*除了...... *除了,但他應該知道他是否在收到流時將流轉儲到磁盤,當Created事件觸發時,可能會有足夠的延遲導致任何文件操作失敗。在這種情況下,他應該將其轉儲到臨時文件,然後將其複製到目標文件夾。 – Will

+2

我同意應該在臨時文件夾中創建(在同一個物理磁盤上),但是您應該做一個移動而不是副本,因爲這樣可以避免複製操作中引入任何可能導致它開始處理不完整文件。 –

相關問題