GUI Neuzeichnen während CPU-Auslastung

dertobian

Mitglied
Hallo,

ich habe folgendes Problem: Es existiert eine Liste von Structs, auf der nacheinander mehrere aufwändige Operationen ausgeführt werden. Operationen sind z.B. der Vergleich der Liste mit sich selbst, was bei 100000 Einträgen doch schon sehr lange dauern kann. Es geht nicht anders und ist auch nicht schlimm.
Was ich aber möchte, ist, dass die GUI mir zumindest immer anzeigt, welche Operation gerade auf der Liste ausgeführt wird. Ich habe bereits einen Fortschrittsbalken gebaut, der auch trotz CPU-Auslastung super funktioniert. Aber das Neuzeichnen von Textfeldern erzwingen geht leider nicht so einfach. Kann / muss ich das irgendwie in einen eigenen Thread packen? Kann mir da jemand weiterhelfen?

Gruß Tobian.
 
Hi!

Ja genau der richtige Gedanke du musst die Verarbeitung deiner structs und die Aktualisierung des Fortschrittbalkens in getrennte Threads packen. Dann ist aber zu beachten, dass du aus Gründen der Threadsicherheit in deiner Form (mit dem Fortschrittsbalken) das Invoke nicht vergisst!

Dazu würd ich mich mal zu den Themen: Thread, Threadsicherheit und Delegate ein wenig auf der MSDN-Seite MSDN-Homepage

schlau machen, oder natürlich hier ;)

Gruß Borzel
 
Zuletzt bearbeitet:
Super, danke! Funktioniert.
Nur noch der Hinweis, der Aufruf von "Application::DoEvents()" bewirkt, dass die GUI auf alle Events reagieren kann! Man sollte also gegebenenfalls Buttons, die zu Inkonsistenzen oder sonstigen Problemen führen können, deaktivieren.

Danke nochmal,
derTobian
 
Zurück