Я хочу использовать FSW для мониторинга, когда файл открывается и изменяется тем же экземпляром моего приложения.Я ожидаю запуска наблюдателя, только когда я сохраняю файл, который дважды открывается в одном приложении (нашем приложении).Моя проблема в том, что этот наблюдатель срабатывает, даже если у меня открыт только один экземпляр моего приложения.Как я могу сделать разницу между сохранением (изменением) одного файла из другого экземпляра приложения или сохранением того же файла из текущего экземпляра приложения?
Я пытаюсь использовать коллекцию, я пытаюсь сделать this.watcher.EnableRaisingEvents = true
или this.watcher.EnableRaisingEvents = false
в другой части программы, но, кажется, ничто не решает мою проблему.
Вот мой фрагмент кода:
private void Load(string fileName)
{
// Only watch seq files.
this.watcher.Path = Path.GetDirectoryName(fileName);
// Watch for changes in LastWrite times.
this.watcher.NotifyFilter = NotifyFilters.LastWrite;
this.watcher.Filter = "*.zzz";
// Add event handlers.
this.watcher.Changed += this.OnChanged;
// Begin watching.
this.watcher.EnableRaisingEvents = true;
// opened file
}
// Define the event handlers.
private void OnChanged(object source, FileSystemEventArgs e)
{
App.Current.Dispatcher.Invoke(() =>
{
MessageBoxResult result = CustomMessageBox.ShowYesNoCancel(
"The file has been modified by another instance.",
"More app instances are opened!",
"Overwrite",
"Reload",
"Save as",
MessageBoxImage.Exclamation);
if (result == MessageBoxResult.Yes)
{
// Overwrite
this.SaveSequence();
}
if (result == MessageBoxResult.Cancel)
{
// Save as
}
if (result == MessageBoxResult.No)
{
// Reload file and lose changes
}
});
// End watching.
this.watcher.EnableRaisingEvents = false;
}
internal bool Save()
{
/// some code
this.File.Write(this.FilePath); //here is the moment when my watcher is triggered
/// rest of the code
}