Ich versuche, einen Hintergrund-Worker zu verwenden, um eine große Menge an Daten aus der Datenbank abzurufen, ohne den Haupt-Thread zu blockieren. Dies scheint gut zu funktionieren, außer dass das Update beim Aktualisieren der Benutzeroberfläche den Bildschirm einfriert. Relevanter Code wie folgt:C# Hintergrund-UI-Update
Das Update dauert ca. 2 - 3 Sekunden, für die der Bildschirm gesperrt ist. Ich weiß, dass nur der Haupt-Thread den Bildschirm aktualisieren kann, aber ist es möglich, diese Daten in irgendeiner Weise in den Speicher zu laden (in einem Hintergrund-Thread oder einer anderen Instanz einer Listenansicht oder etwas) und sie dann einfach anzuzeigen? Ich will nur, dass das Programm die Daten einfach aktualisiert, ohne Zeit im Hauptthread zu verbrauchen.
Es ist eine WinForm app - aber zurück in den VB6 Tagen wurde DoEvents verpönt, weil es könnte Ändern Sie die Reihenfolge der Ereignisse. Ist das in C# nicht der Fall? –
Sie könnten Recht haben, es ist immer noch ein bisschen ein Hack von dem, was ich gehört habe. Hängt von der Komplexität Ihrer App ab. Ich habe meine letzte einfache App zu WPF umgeschrieben, das ist eigentlich ein wirklich nettes Framework. – Remy