我的程序需要監視多個位置,但爲每個位置觸發相同的代碼。由於單個FileSystemWatcher
不能監視多個位置,但是是否可以創建多個實例並傳遞給每個位置的文件夾路徑?創建同一個FileSystemWatcher的多個實例
我無法對每個FileSystemWatcher
進行硬編碼,因爲越來越多的位置需要及時添加,這需要由最終用戶完成,因爲我不得不手動硬編碼新的每次有FileSystemWatcher
。所以我的計劃是將文件夾路徑保存到一個文件中,程序只爲列表中的每個路徑創建一個FileSystemWatcher
。但我不知道這是否可能。
在這裏的工廠方法模式的建議去嘗試: 我得到的錯誤:「‘目錄’不包含‘添加’
public void StartWatchers()
{
string[] ArrayPaths = new string[2];
List<FileSystemWatcher> watchers = new List<FileSystemWatcher>();
ArrayPaths[0] = @"K:\Daily Record Checker\Test\Test1";
ArrayPaths[1] = @"K:\Daily Record Checker\Test\Test2";
int i = 0;
foreach (String String in ArrayPaths)
{
watcher.add(MyWatcherFatory(ArrayPaths[i]));
i++;
}
//Do other stuff....
//....
//Start my watchers...
foreach (FileSystemWatcher watcher in watchers)
{
Watcher.EnableRaisingEvents = true;
i++;
}
}
FileSystemWatcher MyWatcherFatory(string path)
{
FileSystemWatcher watcher = new FileSystemWatcher(path);
watcher.Changed += Watcher_Created;
watcher.Path = path;
watcher.Filter = "*.csv";
return watcher;
}
private void Watcher_Created(object sender, FileSystemEventArgs e)
{
System.Threading.Thread.Sleep(1000);
FileInfo fileInfo = new FileInfo(e.FullPath);
if (!IsFileLocked(fileInfo))
{
CheckNumberOfRecordsInFile(e.FullPath);
}
}
https://msdn.microsoft.com/en-us/library/system.object.memberwiseclone(v=vs.110).aspx –
您更新的代碼有「Watcher.add」...您想添加到您的列表:watchers.Add –
我正在使用Owlsolo的代碼,但將其更改爲hte列表仍然導致「'List'不包含'add'的定義 –
Vereonix