2009-04-08 10 views
0

Ich bekomme diese AusnahmeThreading Problem in WPF

System.InvalidOperationException wurde unhandled durch Benutzercode Message = "Der Aufruf Thread kann diese nicht zugreifen Objekt, weil ein anderer Thread besitzt es."

, wenn ich den folgenden Code

public partial class MainScreen : Window 
{ 
     Timer trm; 

     public MainScreen() 
     { 
      InitializeComponent(); 

      trm = new Timer(1000); 
      trm.AutoReset = true; 
      trm.Start(); 
      trm.Elapsed += new ElapsedEventHandler(trm_Elapsed); 
     } 

     void trm_Elapsed(object sender, ElapsedEventArgs e) 
     { 
      lblTime.Content = System.DateTime.Now; 
     } 
} 

Jungs jede Lösung laufen ... Ich WANN schlecht kommen aus ihm heraus :(

Antwort

3

Verwenden Sie DispatcherTimer statt:

public partial class MainScreen : Window{ 
DispatcherTimer tmr;  
public MainScreen() { 
InitializeComponent(); 
tmr = new DispatcherTimer(); 
tmr.Tick += new EventHandler(tmr_Tick); 
tmr.Start();  
} 
void tmr_Tick(object sender, EventArgs e) { 
    lblTime.Content = System.DateTime.Now; 
} 
} 
0

Jedes Mal, wenn Windows-Steuerelemente ändern Sie das so tun müssen UI-Thread (derjenige, der die Kontrollen erstellt).

Siehe this question für viele Details.

0

Um kurz zu sein, sollten Sie Dispatcher.Invoke Methode verwenden, um UI-Elemente zu aktualisieren.