title: Dispatcher.CheckAccess() Fails
body: <p>I have a WPF UI called GUI.xaml and i need to change labels and images from other class. More over i need to perform a long task, so i'm using a background worker. So i've read a solution in this site:</p>
  
  <p>In GUI.xaml.cs:</p>
  
  <pre><code>public static ChangeGUI someClass;    
  private void worker_DoWork(object sender, DoWorkEventArgs e)
      {
          someClass = new ChangeGUI(this); //          
          TaskClass.ConnectionThread(SuperHero.getUserID());
      }
  </code></pre>
  
  <p>in ChangeGUI.cs:</p>
  
  <pre><code>public class ChangeGUI
  {
      GUI _GUIRef;
  
      public ChangeGUI(GUI gui)
      {
          _GUIRef = gui;
      }
  
      public void ChangeLabel()
      {
          //here we can play with labels
      }
      public void ChangeMap(ImageSource tmp)
      {
          if (_GUIRef.image1.Dispatcher.CheckAccess())
              _GUIRef.image1.Source = tmp;//ERROR!!!!!!!!!!!!!! 
          else
              _GUIRef.image1.Dispatcher.Invoke(new Changer(ChangeMap), tmp);
      }
  }
  </code></pre>
  
  <p>Here i receive an error: The calling thread cannot access this object because a different thread owns it.
  Help is welcome, 
  Thank You!</p>