Вот сценарий, который я пытаюсь достичь,
Моя программа имеет таймер, интервал которого установлен в 10 секунд (10000 мс).
Я хочу проверить конкретные условия, например, если определенный файл существует или был изменен, а затем соответствующим образом изменить timer.interval.
Вот мой код:Почему я не могу изменить Timer.ineterval во время выполнения?
static void Main(string[] args)
{
timer.Interval =10000;
timer.Elapsed += new System.Timers.ElapsedEventHandler(WriteToConsole);
timer.Start();
if(fileExists(@"C:\temp\1.txt"))
{
timer.Interval =20000; //20 seconds
}
else if(fileExists(@"C:\temp\2.txt"))
{
timer.Interval =15000; // 15 seconds
}
}
public static void WriteToConsole(object sender, System.Timers.ElapsedEventArgs args)
{
Console.WriteLine(DateTime.UtcNow);
}
Но это не работает, как это нужно.
Я уже прочитал их, но не смог найти решение.
1 - 2 - 3
Вы пытались «остановить» таймер перед изменением интервала, а затем снова «запустить» его. Не удивительно, что это может вызвать некоторое исключение, если вы изменили интервал во время выполнения таймера. – Sidewinder94
И что не работает, каково поведение этого кода? – Sidewinder94
Это не помогает, что это явно * не является вашим кодом, потому что 'else if (@" C: \ temp \ 2.txt ")' не будет компилироваться. Пожалуйста, предоставьте [mcve]. –