Laden...

Innerhalb eines Daten-Thread auf VM-Eigenschaft zugreifen

Letzter Beitrag vor einem Jahr 2 Posts 452 Views
Innerhalb eines Daten-Thread auf VM-Eigenschaft zugreifen

Hallo!

Ich starte im VM über async/await einen Daten-Thread:

private async void ExtraktExecuted(object obj)
{
    ...   
    ListHausBlätter = await System.Threading.Tasks.Task.Run(() => RefreshHausBlätterListe(App.PfadHausblätter, MaxDateien, ShowVerarbeitung));

im Daten-Thread möchte ich eine VM-Eigenschaft aktualisieren:

--- Daten-Thread ----------
private static async System.Threading.Tasks.Task<List<Hausblatt>> RefreshHausBlätterListe(string Pfad, int Umfang, bool ShowVerarbeitung)
{
    ...
    Application.Current.Dispatcher.Invoke(new Action(() => VM_Aktualisierung(VerarbeitungsZähler * 100 / HausBlätterListe.Count)));
}

--- GUI-Thread ------------
private static void VM_Aktualisierung(double verarbeitungsStand)
{
            
    // VerarbeitungStand = 50;
}

In der Methode VM_Aktualisierung befinde ich mich wieder im GUI-Thread. Dadurch das ich die Methode als static deklariert habe, fehlen mir allerdings alle Eigenschaften (es werden nur die Methoden im VS angezeigt), siehe Bild.

Wenn ich die VM_Aktualisierung-Methode als Instanz-Methode deklariere wird wiederum der Fehler, das ein Objekt-Verweis erforderlich ist, geworfen:

error CS0120: Für das nicht statische Feld, die Methode oder die Eigenschaft "VMHausblätter.VM_Aktualisierung(double)" ist ein Objektverweis erforderlich.

Wie kann ich denn nun eine VM-Eigenschaft, aus dem Daten-Thread heraus, aktualisieren?

Sorry, Sorry, Sorry ...

Die Methode die den Daten-Thread aufruft, darf nicht als static deklariert werden:

private async System.Threading.Tasks.Task<List<Hausblatt>> RefreshHausBlätterListe(string Pfad, int Umfang, bool ShowVerarbeitung)

dann kann die VM_Aktualisierungs-Methode auch als Instanz-Methode deklariert werden und damit stehen in dieser wieder die VM-Eigenschaften  zur Verfügung.

private void VM_Aktualisierung(double verarbeitungsStand)