Zum Inhalt springen

zweiter gui thread


phyrex

Empfohlene Beiträge

hi all,

momentan probiere ich ein "ProgressWnd" anzuzeigen, das während eines

längeren Prozesses einen ProgressBar anzeigt, der einfach durchläuft.

Man kann sich das vorstellen wie den Mini-Dialog der erscheint, wenn man im

Explorer Dateien kopiert.

Die Funktionalität ist bereits vorhanden, also zum Problem:

Den ProgressBar lasse ich in einem extra Thread laufen, nur dass dieser

eben nicht der GUI Thread ist. D.h. der lange Prozess läuft durch und erst

dann kommt der ProgressBar mit dem zeichnen dran.

Wie kann man einen zweiten GUI-Thread öffnen, der sich um das Zeichnen des

ProgressBar im nicht modalen Dialog kümmert?

thanx in advance

Phyrex

Link zu diesem Kommentar
Auf anderen Seiten teilen

--> Verschoben: C++: Compiler, IDEs, APIs,

weil Standard-C/C++ keine Threads kennt.

Original geschrieben von phyrex

Wie kann man einen zweiten GUI-Thread öffnen, der sich um das Zeichnen des

ProgressBar im nicht modalen Dialog kümmert?

(Ich gehe im folgenden davon aus, dass du von Windows redest)

Der GUI-Thread ist der, der das Fenster erstellt, denn für diesen Thread richtet Windows die Messagequeue ein. Wenn also dein ProgressWnd im Hintergrund Arbeit verrichten soll, musst du das Fenster aus dem ursprünglichen Threadkontext erstellen, und dann erst den Arbeitsthread starten.

Einen zweiten GUI-Thread solltest du dann nicht mehr benötigen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

eben dieses versuche ich umzukehren, um dem ProgressWnd eine möglichst grosse wiederverwendbarkeit zu gewähren. wenn man die langen aktionen, die bereits im Code vorhanden sind, jeweils in einen Worker Thread packen muss, ändert man auch die komplette struktur und das interface des bestehenden codes, zumindest durch eine schnittstellen-erweiterung. das soll aber verhindert werden.

kann nicht nur der GUI Thread das Fenster erzeugen?

werd da mal rumprobieren...

vielen dank für konstruktive antworten

Phyrex

Link zu diesem Kommentar
Auf anderen Seiten teilen

Original geschrieben von phyrex

ist es denn nicht üblich, einen zweiten gui thread zu öffnen?

finde quasi keinerlei informationen dazu...

Eigentlich nicht. Meistens reicht ein GUI-Thread pro Prozess aus, weil der eigentlich sowieso die meiste Zeit wartet.

Aber du kannst ja genausogut zwei neue Threads starten. Ein Thread wird dadurch zum GUI-Thread, indem du aus diesem Thread ein Fenster erzeugst. Das darf halt nicht der sein, der die ganze Arbeit macht.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...