@OwDafuq

Странное поведение System.Timers.Timer, почему в 1 методе он Enabled = false, а в другом = true?

Здравствуйте.
Есть таймер, объявленный как:
static Timer timer = new Timer(60000)
{
	AutoReset = false
};

В одном из методов я его выключаю: timer.Enabled = false;
И вывожу в консоль состояние: Console.WriteLine(timer.Enabled);
И получаю: False.
Затем вызывается другой метод, в котором код Console.WriteLine(timer.Enabled);
Показывает True, из-за чего это может быть?
п.с. - программа многопоточная, но это не особо важно, т.к. даже на MSDN написано, что таймеры - потокобезопасны.
п.с.с. - Enable = true таймеру не может быть назначен нигде, кроме одного метода (проверено даже через "Найти все ссылки"), который вызывается только 1 раз и не может быть вызван пока таймер работает.

Так же замечу, что Elapsed ивент вызывается 2 раза, из метода, где выключается таймер (стоит прямой вызов МЕТОДА, а не ивента) и когда проходит заданное время.
Но таймер можно остановить и он остановится лишь в том методе, который показывает, что таймер включен, хотя до этого он был выключен.
  • Вопрос задан
  • 276 просмотров
Решения вопроса 1
@OwDafuq Автор вопроса
В общем решение обнаружилось чисто случайно.
Проблема была с использованием ObservableCollection и добавлением значением ДО запуска таймера.
Решение такое: запускаем таймер и только потом добавляем значения в коллекцию.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы