.NET 4.x Программа при проверке в цикле не дает срабатывать таймеру в классе - C#
Формулировка задачи:
Здравствуйте!
Неожиданно получил такую проблему и не ясно почему:
В приложении создал класс А.
В классе есть таймер, который запускается сразу же после реализации объекта класса, то есть таймер описан в конструкторе.
Таймер каждую секунду записывает в поле класса(dt) текущее время.
В главной программе такой смысл кода:
То есть, действия дальше будут происходить только, когда изменится значение поля dt в классе A.
Почему-то программа при проверке в цикле не дает срабатывать таймеру в классе...(
cur = А.dt;
while (cur == А.dt)
{}Решение задачи: «.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));
}
}