Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 触发弹出窗口的文件夹监视器_C#_Visual Studio_Service_Monitoring_Filesystemwatcher - Fatal编程技术网

C# 触发弹出窗口的文件夹监视器

C# 触发弹出窗口的文件夹监视器,c#,visual-studio,service,monitoring,filesystemwatcher,C#,Visual Studio,Service,Monitoring,Filesystemwatcher,我正在尝试创建某种服务来监视特定目录的更改。当发生特定更改时,将出现一个WPF弹出窗口。此服务还应可通过Windows(Windows 10,Visual Studio 2015)中右下角的任务重试来访问 这样做的最佳方法是什么?我已经编写了一个Windows服务,它使用了FileSystemWatcher。但我无法从那里触发任何弹出通知或GUI。有很多方法,但都不是推荐的做法 实现我的目标的好的替代方法是什么 谢谢大家! 如果您仔细阅读,您将了解到为什么在同一个项目中通常不可能有服务和GUI应

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

这样做的最佳方法是什么?我已经编写了一个Windows服务,它使用了
FileSystemWatcher
。但我无法从那里触发任何弹出通知或GUI。有很多方法,但都不是推荐的做法

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

谢谢大家!

如果您仔细阅读,您将了解到为什么在同一个项目中通常不可能有服务和GUI应用程序

正如中所指出的,如果您想通过使用托盘图标应用程序来解决此问题,您可以遵循 您可以根据需要设置路径和过滤器属性,研究如何使用
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
}

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

服务不能有GUI。您的代码是什么?你试过什么?正如所指出的,服务没有GUI,所以您需要考虑其他的东西。明确规定你不想做什么,以及到目前为止你做了什么。你对插座有多满意?您可以让您的服务在本地端口上打开一个套接字,您的客户端可以通过一个简单的协议注册和接收广播。因此,正如我所说的,我意识到Windows服务不能调用GUI,至少不能以推荐的方式调用。我还明确指出,我需要监视一个目录,当目录中的任何内容发生更改时,会抛出一个弹出通知。我还提到,我已经编写了一个利用FileSystemWatcher的windows服务。但是Hitesh用一篇文章的链接回答了我的问题,这篇文章描述了如何使用任务托盘应用程序。谢谢。我已经清楚地提到,我编写了一个充分利用FileSystemWatcher的服务。我对此非常熟悉。然而,您链接到关于任务托盘应用程序的文章是一个很大的帮助。你的另一个链接也非常有趣。非常感谢。