Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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

--> 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.

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

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

finde quasi keinerlei informationen dazu...

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.

danke!

habe mich inzwischen überzeugen lassen und schreibe wrapper functions für die arbeit und packe das in einen worker thread. das fenster läuft in der zwischenzeit im gui thread mit.

Phyrex

Hab das auch noch nie anders gehört. Es sei denn du machst viel mit GDI.

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.