Как я могу "приостановить" систему.Таймер в VB.NET?
голосование вниз
любимый
Я использую system. timer в службе Windows для запуска процесса, который обычно превышает интервал таймера. Я пытаюсь удержать таймер от запуска одного и того же кода более одного раза, известная проблема с system.timers.
Что я хочу: таймер запускает мой код, но таймер "делает паузу", чтобы дождаться завершения кода, прежде чем возобновить тики.
У меня две проблемы:
1. способ работы system. timers заключается в том, что таймер создаст для вас состояние гонки, запустив новые избыточные потоки того же кода и накапливая их на вас, если они не завершатся к тому времени, когда истечет интервал таймера.
2. я бы запустил/остановил таймер, чтобы этого не произошло, но с системой.Таймеры.Таймер, как только вы остановите таймер для завершения обработки, он никогда не вернется - я никогда не мог перезапустить таймер после того, как он был остановлен, он был уничтожен и, вероятно, собран. Включение/выключение - это то же самое, что и запуск/остановка с теми же результатами.
Как же вы удерживаете system. timer от запуска новых избыточных потоков того же кода, если процесс не завершен к тому времени, когда интервал таймера истек? Очевидно, что запуск/остановка (включение / выключение) таймера не является решением, так как он не работает.
Помогите!
Sergey Alexandrovich Kryukov
Я не знаю такой классовой системы.Таймер? Какой таймер вы действительно используете? Зачем вообще использовать таймер?
—СА
PIEBALDconsult
Вы можете отключить его в начале метода и снова включить в конце.