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)