У меня возникла проблема, похожая на эту: FileSystemWatcher - только событие изменения один раз запускается?
Но так как этому потоку два года, и мой код немного другойЯ решил открыть новый вопрос.
Вот мой код:
while (true)
{
FileSystemWatcher fw = new FileSystemWatcher();
fw.Path = @"Z:\";
fw.Filter = "*.ini";
fw.WaitForChanged(WatcherChangeTypes.All);
Console.WriteLine("File changed, starting script...");
//if cleanup
try
{
if (File.ReadAllLines(@"Z:\file.ini")[2] == "cleanup")
{
Console.WriteLine("Cleaning up...");
Process c = new Process();
c.StartInfo.FileName = System.Environment.GetFolderPath(Environment.SpecialFolder.Desktop).Trim('\\') + @"\clean.exe";
c.StartInfo.WorkingDirectory = System.Environment.SpecialFolder.DesktopDirectory.ToString();
c.Start();
c.WaitForExit();
Console.WriteLine("Done with cleaning up, now starting script...");
}
}
catch
{
Console.WriteLine("No cleanup parameter found.");
}
Process p = new Process();
p.StartInfo.FileName = System.Environment.GetFolderPath(Environment.SpecialFolder.Desktop).Trim('\\') + @"\go.exe";
p.StartInfo.WorkingDirectory = System.Environment.SpecialFolder.DesktopDirectory.ToString();
p.Start();
Console.WriteLine("Script running...");
p.WaitForExit();
fw = null;
Console.WriteLine("Done. Waiting for next filechange...");
}
Проблема: эта программа должна обнаружить изменение файла в файле "Z: \ file.ini".Если он изменился, скрипт должен быть запущен.Когда сценарий завершен, программа должна вернуться к началу и снова начать наблюдать за изменениями (поэтому я использовал цикл while).Ну, первое изменение обнаружено, и все, кажется, работает просто отлично, но любые изменения ПОСЛЕ первого не будут обнаружены.Я пытался установить для объекта FileSystemWatcher значение null, как вы можете видеть, но это не помогло.
Итак, я надеюсь на хорошие ответы.Спасибо.