Ich versuche, einen Etiketteninhalt jede Sekunde zu aktualisieren. Also definiere ich zwei Methoden wie folgt. Ich benutze startStatusBarTimer()
in meinem Konstruktor von Window
.
Codes:
%Vor%Aber ich bekomme diesen Fehler:
Der aufrufende Thread kann nicht auf dieses Objekt zugreifen, da ein anderer Thread es besitzt.
Was ist los? Oder Was kann ich tun?
Sie stehen vor dem Problem Thread-Affinität . Da das Ereignis "verstrichen" in background thread
aufgerufen wird, können Sie nicht auf Hintergrundsteuerelemente aus dem Hintergrundthread zugreifen. Sie müssen Ihre Aktion auf UI dispatcher
setzen, damit sie an den UI-Thread gesendet wird -
ODER
Sie können DispatcherTimer
verwenden, das speziell für diesen Zweck erstellt wurde. Sie können über den Ereignishandler Tick
auf UI-Steuerelemente zugreifen. Sehen Sie sich das Beispiel hier unter MSDN an.
Verwenden Sie den folgenden Code zum Aktualisieren eines beliebigen Steuerelements in der WPF-Anwendung. Sie müssen diese Klasse in Ihrem Namespace überschreiten.
%Vor%danach wie folgt verwenden.
%Vor%