У меня есть код FileSystemWatcher
на C#, который обнаруживает файлы, изменившие свое содержимое, а затем копирует эти файлы в указанный каталог (C:\Users\wost\Desktop\Data\files). После копирования файлов, то есть после того, как FileSystemWatcher
остановился, я хочу зашифровать эти файлы и хочу сделать это в той же программе. Итак, у меня есть следующий код в основной программе:
Watcher w = new Watcher(lexpt, fexpt, userName);
w.Watch();
// Function which encrypts the files
Encryption.EncryptFiles(@"C:\Users\wost\Desktop\Data\files");
Это не работает, потому что FileSystemWatcher
никогда не остановится, только если я выйду из программы. Итак, я решил использовать глобальную переменную Global.serviceRunning
, как показано в приведенном ниже коде, которая останавливает FileSystemWatcher
от просмотра в указанном каталоге:
public void Watch()
{
FileSystemWatcher watcher;
using (watcher = new FileSystemWatcher(
$"C:\\Users\\wost\\AppData\\Roaming\\Sublime Text 3", _ext))
{
// Watch for changes in LastAccess and LastWrite times, and
// the renaming of files or directories.
watcher.NotifyFilter = NotifyFilters.LastAccess
| NotifyFilters.LastWrite
| NotifyFilters.FileName
| NotifyFilters.DirectoryName;
// Only watch text files.
// watcher.Filter = "*.txt";
watcher.IncludeSubdirectories = true;
// Add event handlers.
watcher.Changed += OnChanged;
watcher.Created += OnChanged;
watcher.Deleted += OnChanged;
watcher.Renamed += OnRenamed;
// Begin watching.
watcher.EnableRaisingEvents = true;
//GLOBAL VARIABLE
while (Global.serviceRunning == true) ;
}
}
Я попытался изменить значение этой глобальной переменной на false
в основной программе, но это не работает. Не могли бы вы помочь мне найти способ, как остановить FileSystemWatcher
, а затем зашифровать файлы в данном каталоге?