簡體   English   中英

帶有FileSystemWatcher的Windows Service在第一個事件后停止

[英]Windows Service with FileSystemWatcher stops after the first event

我正在構建一個簡單的Windows服務(基本上將本教程此類結合)。

現在,我有一個“ FROM”目錄和兩個“ TO”(TO1,TO2)目錄。 當我將文件放入FROM時,應將其同時復制到TO1和TO2。 我安裝了服務,並在運行狀態的服務控制管理器中啟動了該服務。 在第一次運行時,它將文件復制到TO1和TO2,並且此后服務仍在運行。 然后,當我將另一個文件放置到FROM(具有不同的名稱)時,什么也沒發生。 刷新服務后,我發現該服務已停止。

服務為何停止​​? 似乎在我放置第二個文件的那一刻就停止了。

在這里,我注冊了文件系統觀察器:

    // File System Watcher
    var fileSystemWatcher = new FileSystemWatcher();
    fileSystemWatcher.Created += FileSystemWatcher_MoveOnCreate;
    fileSystemWatcher.Path = this.fromPath;
    fileSystemWatcher.EnableRaisingEvents = true;

這是事件處理程序:

private void FileSystemWatcher_MoveOnCreate(object sender, FileSystemEventArgs e)
{
    string FROM = Path.Combine(fromPath, e.Name);
    string TO1 = Path.Combine(toPathOne, e.Name);
    string TO2 = Path.Combine(toPathTwo,  e.Name);

    File.Copy(FROM, TO1);
    File.Copy(FROM, TO2)
}

如果Windows服務停止,則您的代碼中某個地方將出現未處理的異常。 嘗試使用try{}catch(){}包圍代碼的關鍵點(可能是FileSystemWatcher_MoveOnCreate函數的整個主體),並記錄發生的情況。 通常,您應該將日志添加到Windows服務中,這是您了解事情是否正在進行的唯一方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM