我正在尝试创建某种服务,以监视特定目录中的更改。发生某些更改时,将出现一个WPF弹出窗口。还可以通过在Windows(Windows 10,Visual Studio 2015)中的右下方任务try来访问此服务。
执行此操作的最佳方法是什么?我已经编写了一个使用FileSystemWatcher
的Windows服务。但是我无法从那里触发任何弹出通知或GUI。有办法,但不建议这样做。
什么是实现我的目标的好方法?
谢谢!
答案 0 :(得分:0)
如果您浏览this SO article,将会对为什么在同一项目中通常无法使用服务和GUI应用程序有一些了解。
正如this article at code project中指出的那样,如果您想使用任务栏图标应用程序来解决该问题,可以遵循this article from 2007和
您可以根据需要设置路径和过滤器属性来研究使用System.IO.FileSystemWatcher fileWatcherService
。
fileWatcherService.Path = 'your_folder_path';
fileWatcherService.Filter = "*.*"; //watching all files
fileWatcherService.EnableRaisingEvents = true; //Enable file watcher
在处理表单时,请记住禁用事件引发属性:
fileWatcherService.EnableRaisingEvents = false;
并且,当您需要关联任何操作时,将事件处理程序附加到诸如以下的事件上:
public event FileSystemEventHandler Deleted;
public event FileSystemEventHandler Created;
public event FileSystemEventHandler Changed;
public event RenamedEventHandler Renamed;
public event ErrorEventHandler Error;
例如,
fileWatcherService.Created += new System.IO.FileSystemEventHandler(this.fileWatcherService_OnFileCreated);
而
private void fileWatcherService_OnFileCreated(object sender, FileSystemEventArgs e)
{
//Put your popup action over here
}
您可以通过使用可重用的通用方法来调用弹出窗口来对更改,删除和重命名的事件执行相同的操作。