2016-06-23 3 views
0

Вот сценарий, который я пытаюсь достичь,
Моя программа имеет таймер, интервал которого установлен в 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

+2

Вы пытались «остановить» таймер перед изменением интервала, а затем снова «запустить» его. Не удивительно, что это может вызвать некоторое исключение, если вы изменили интервал во время выполнения таймера. – Sidewinder94

+1

И что не работает, каково поведение этого кода? – Sidewinder94

+1

Это не помогает, что это явно * не является вашим кодом, потому что 'else if (@" C: \ temp \ 2.txt ")' не будет компилироваться. Пожалуйста, предоставьте [mcve]. –

ответ

1

Попробуйте написать свой старт после того, как вы укажете интервал, либо остановить таймер и начать заново позже.

+0

остановился и начал таймер, теперь все хорошо. –

+0

Отличный @JeremyM :) –

Смежные вопросы