Progress-Dialog ohne BackgroundWorker realisieren?



  • Hallo, ich habe folgendes Problem. Ich entwickle ein Plugin in C#/WPF und will für eine längere Aufgabe einen Progress-Dialog anzeigen. Nun ist es aber so, dass die lange Operation unbedingt im Haupt-Thread laufen muss (API-seitige Restriktion) und ich sie deswegen nicht einfach in einen Background-Worker packen kann. Ich dachte mir dann, dass ich einfach den Dialog aufmache vor der langen Operation, zwischendurch den Zähler der Progress-Bar erhöhe und dann nachher wieder den Dialog schließe. Ist nicht elegant, wäre mir aber auch egal. Nun ist bei der Lösung das Problem, dass die Progress-Bar sich nicht aktualisiert weil die UI sich nie "refreshed". Im Netz liest man viel, dass man hier mit einem Dispatcher arbeiten soll, aber das Problem mit der stockenden Anzeige bleibt.

    Kennt jemand eine gute Möglichkeit dieses Problem zu lösen? Ich habe auch schon versucht den Progress-Dialog statt der Operation in einen Thread zu packen, bin damit aber gescheitert.

    Danke schonmal und viele Grüße!



  • Ich habe eine mögliche Lösung... wenn ich Dispatcher.CurrentDispatcher.Invoke statt ProgressBar.Dispatcher.Invoke nehme um den Wert der ProgressBar hoch zu zählen, dann funktioniert es wie gewünscht. Keine Ahnung warum und ob das jetzt der wirklich gute Weg ist, aber für den Moment reicht mir das ;).


Anmelden zum Antworten