2016-05-05 25 views
-1

Ich muss unbestimmten Fortschrittsbalken anzeigen, aber nicht auf Haupt-UI-Thread. Ist das möglich? In meiner App ändere ich die App-Oberfläche. Es ändert Ressourcen wie SolidColorBrushes, Fonts, Images - das hängt den Haupt-UI-Thread für ca. 2 Sekunden. Diese Art von Arbeit muss im Hauptthread der Benutzeroberfläche erledigt werden, also brauche ich einen anderen (UI!) Thread für den Fortschrittsbalken. Wie könnte ich es tun?Zwei UI-Threads oder eine Problemumgehung

Ich frage nicht über die Arbeit in einem anderen Thread allgemein! Die Frage bezieht sich auf 2 UI-Threads oder eine andere Problemumgehung dafür.

+0

Ich dachte an ein anderes Fenster, das auf einem anderen Thread laufen würde - ist es die beste Lösung? – walkerbox

Antwort

-1

Offenbar ist dies eine sehr häufige Frage, und es gibt tatsächlich einige Möglichkeiten, dies zu tun. Lassen Sie mich auf eine sehr ähnliche Frage eingehen, die ich gestern gepostet habe. Ihre Antworten könnten hilfreich sein oder zumindest helfen, den richtigen Weg zu finden.

WPF Progress bar working but blocked in UI thread even using async

+0

"Die beste Option ist es, Task.Run zu verwenden, um die schwere Verarbeitung in den Thread-Pool zu verschieben, und die Ergebnisse mithilfe von" warten "abzurufen." - Ich kann es nicht tun, weil meine "schwere Verarbeitung" UI rendert - es kann nicht in einen anderen Thread verschoben werden – walkerbox

-1

Es ist möglich, und ich habe es in einigen Projekten.
Aber ich werde es nicht empfehlen. Es wird unordentlich und viele Dinge müssen behandelt werden. z. B. halten Sie es immer an der Spitze, spezifische UI-Thread etc.
Da es nur 2 Sekunden Verzögerung - Sie können versuchen, ein GIF auf Haupt-Thread selbst verwenden.

+0

Würde das gif funktionieren/animieren? Mein Haupt-Thread beschäftigt sich mit dem Rendern von Bildern/Ressourcen. Die App hängt. – walkerbox

+0

Ohh. Das habe ich vermisst. Es wird nicht animiert, besser ein statisches Bild zu haben. – nishjeki