Задать вопрос
@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 раза, из метода, где выключается таймер (стоит прямой вызов МЕТОДА, а не ивента) и когда проходит заданное время.
Но таймер можно остановить и он остановится лишь в том методе, который показывает, что таймер включен, хотя до этого он был выключен.
  • Вопрос задан
  • 289 просмотров
Подписаться 1 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • OTUS
    C# Developer. Professional
    6 месяцев
    Далее
  • Ulearn.me
    Основы программирования на примере C#. Часть 1
    1 неделя
    Далее
  • Software-testing.ru
    Программирование на C# для тестировщиков
    10 недель
    Далее
Решения вопроса 1
@OwDafuq Автор вопроса
В общем решение обнаружилось чисто случайно.
Проблема была с использованием ObservableCollection и добавлением значением ДО запуска таймера.
Решение такое: запускаем таймер и только потом добавляем значения в коллекцию.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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