using System.ComponentModel;
public static void Main()
Console.WriteLine("MyProperty = {0}", y.MyProperty);
Console.WriteLine("MyPropertyOriginal = {0}", y.MyPropertyOriginal);
y.MyPropertyOriginal = 4;
Console.WriteLine("MyProperty = {0}", y.MyProperty);
Console.WriteLine("MyPropertyOriginal = {0}", y.MyPropertyOriginal);
public class Y : INotifyPropertyChanged
private object _lock = new object ();
private int _myPropertyOriginal;
public int MyPropertyOriginal
return _myPropertyOriginal;
if (value != _myPropertyOriginal)
_myPropertyOriginal = value;
if (_myPropertyOriginal != _myProperty)
NotifyPropertyChanged("MyPropertyOriginal");
if (value != _myProperty)
if (_myPropertyOriginal != _myProperty)
_myPropertyOriginal = value;
NotifyPropertyChanged("MyProperty");
private void NotifyPropertyChanged(string propertyName)
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
public event PropertyChangedEventHandler PropertyChanged;