触发弹出窗口的文件夹监控器

时间:2018-11-05 20:18:38

标签: c# visual-studio service monitoring filesystemwatcher

我正在尝试创建某种服务,以监视特定目录中的更改。发生某些更改时,将出现一个WPF弹出窗口。还可以通过在Windows(Windows 10,Visual Studio 2015)中的右下方任务try来访问此服务。

执行此操作的最佳方法是什么?我已经编写了一个使用FileSystemWatcher的Windows服务。但是我无法从那里触发任何弹出通知或GUI。有办法,但不建议这样做。

什么是实现我的目标的好方法?

谢谢!

1 个答案:

答案 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
}

您可以通过使用可重用的通用方法来调用弹出窗口来对更改,删除和重命名的事件执行相同的操作。