Монитор папок, который вызывает всплывающее окно - PullRequest
0 голосов
/ 05 ноября 2018

Я пытаюсь создать какую-то службу, которая отслеживает изменения в определенном каталоге. Когда происходит определенное изменение, должно быть всплывающее окно WPF. Эта служба также должна быть доступна через нижнюю правую попытку задачи в Windows (Windows 10, Visual Studio 2015).

Каков наилучший метод для этого? Я написал службу Windows, которая использует FileSystemWatcher. Но я не могу вызвать всплывающее уведомление или графический интерфейс оттуда. Есть способы, но ни один из них не является рекомендуемой практикой.

Какой хороший альтернативный метод для достижения моей цели?

Спасибо!

1 Ответ

0 голосов
/ 05 ноября 2018

Если вы прочитаете эту статью SO , вы немного поймете, почему обычно невозможно использовать сервис и приложение с графическим интерфейсом в одном проекте.

Как указано в этой статье в проекте кода , если вы хотите решить ее с помощью приложения в виде иконки в трее, вы можете следовать этой статье за ​​2007 и вы можете изучить использование System.IO.FileSystemWatcher fileWatcherService, установив свойства Path и filter в соответствии с вашими потребностями.

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
}

Вы можете выполнить то же действие для измененных, удаленных и переименованных событий, используя повторно используемый общий метод для вызова всплывающего окна.

...