.NET 4.x Программа при проверке в цикле не дает срабатывать таймеру в классе - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте! Неожиданно получил такую проблему и не ясно почему: В приложении создал класс А. В классе есть таймер, который запускается сразу же после реализации объекта класса, то есть таймер описан в конструкторе. Таймер каждую секунду записывает в поле класса(dt) текущее время. В главной программе такой смысл кода:
cur = А.dt;
while (cur == А.dt)
{}
То есть, действия дальше будут происходить только, когда изменится значение поля dt в классе A. Почему-то программа при проверке в цикле не дает срабатывать таймеру в классе...(

Решение задачи: «.NET 4.x Программа при проверке в цикле не дает срабатывать таймеру в классе»

textual
Листинг программы
using System;
using System.ComponentModel;
using System.Runtime.CompilerServices;
using System.Threading;
using Timer = System.Timers.Timer;
 
internal class Class8
{
    private static void Main()
    {
        var a = new AA();
        a.PropertyChanged += (sender, args) => Console.Write("Изменилось время" + Environment.NewLine);
        while (true)
        {
            Thread.Sleep(1000);
        }
    }
}
 
internal class AA : INotifyPropertyChanged
{
    private DateTime _dt;
 
    public DateTime Time
    {
        get { return _dt; }
        private set
        {
            _dt = value;
            OnPropertyChanged();
        }
    }
 
    public AA()
    {
        var timer = new Timer(1000);
        timer.Elapsed += (sender, args) => { Time = DateTime.Now; };
        timer.Enabled = true;
    }
 
    public event PropertyChangedEventHandler PropertyChanged;
 
    protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
    {
        PropertyChangedEventHandler handler = PropertyChanged;
        if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName));
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4.091 из 5
Похожие ответы