ciao, in .net esiste gia un interfaccia che fa al caso tuo: INotifyPropertyChanged.

io te la ripropongo da zero cosi da farti vedere oltre che come usarla anche cosa effettivamente è (e come usare gli eventi in c#).

codice:
// Firma dell'evento il quale in realtà è una delegate che ritorna void e ha due argomenti in input
    // un riferimento all'oggetto scatenante di tipo object e un "bagaglio" di informazioni da mettere a disposizione dei subscriber
    // Il secondo oggetto è di tipo derivante da EventArgs.
    public delegate void CustomNotifierEventHandler(object sender, CustomNotifierTypeEventArgs e);

    // OPZIONALE. EventArgs specializzato per il nostro specifico evento.
    // L'oggetto conterrà tutte le info da passare ai sottoscritti
    // per esempio il nome della proprietà che è cambiata
    public class CustomNotifierTypeEventArgs : EventArgs
    {
        public string NomeProprieta { get; set; }
    }

    // Interfaccia da implementare dalle classi che vogliono "notificare" i cambiamenti alle loro proprietà
    public interface ICustomNotifierPropertyChanged
    {
        public event CustomNotifierEventHandler PropertyChanged;
    }

    // Classe di esempio.
    // La proprietà Variabile1 notificherà tramite evento ogni volta che subirà cambiamenti
    public class ClassManager : ICustomNotifierPropertyChanged
    {
        private int _variabile1;
        public int Variabile1
        {
            get
            {
                return _variabile1;
            }
            set
            {
                if (_variabile1 != value)
                {
                    _variabile1 = value;
                    OnPropertyChanged("Variabile1");
                }
            }
        }

        /// L'implementazione dell'interfaccia non è altro che la dichiarazione dell'evento
        public event CustomNotifierEventHandler PropertyChanged;

        public void OnPropertyChanged(string nomeProp)
        {
            // Salvare un evento in una var temporanea prima di usarlo è un pattern che ti mette
            // PARZIALMENTE al sicuro da eventuali problemi di sincronizzazione.
            var temp = PropertyChanged;
            if (temp != null)
            {
                CustomNotifierTypeEventArgs e = new CustomNotifierTypeEventArgs { NomeProprieta = nomeProp };
                temp(this, e);
            }
        }
    }