title: INotifyPropertyChanged: Risks with thread-safe Dispatcher implementation
body: <p>With the implementation of INotifyPropertyChanged, I've regularly come across the typical multi-threading exception: "The calling thread cannot access this object because a different thread owns it." To address this, I decided to try and implement a thread-safe OnPropertyChanged method as follows:</p>
  
  <pre><code>    [field: NonSerialized]
      public event PropertyChangedEventHandler PropertyChanged;
  
      public void OnPropertyChanged(string name)
      {
          PropertyChangedEventHandler handler = PropertyChanged;
  
          Application.Current.Dispatcher.Invoke(new Action(() =&gt;
         {
             if (handler != null)
             {
                 handler(this, new PropertyChangedEventArgs(name));
             }
         }));                        
      }
  </code></pre>
  
  <p>What I have noted, is that there is a significant performance strain. In addition to this, are there any other risks/concerns with implementing this approach?</p>
  
  <p><strong>EDIT</strong></p>
  
  <p>I'm using WPF GUI technology.</p>