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.

Dialog im Thread Starten Fehler

Empfohlene Antworten

Veröffentlicht

Hallo,

ich möchte in einem Thread einen Dialog öffnen und per ProzessBar den Bearbeitungszustand anzeigen lassen. Hat der Thread seine arbeit erledigt wird der Dialog im Thread geschlossen. Solange ich nur einen Thread gestartet habe, kein Problem. Laufen zwei Threads gleichzeitig, Absturz.

Ich denke mal da Sie auf die gleiche Resource zugreifen. Den Dialog starte ich so:

CDiaProzessBar *m_DiaProzessBar = new CDiaProzessBar();

m_DiaProzessBar->Create(CDiaProzessBar::IDD);

m_DiaProzessBar->ShowWindow(SW_SHOW);

...

Kann mir jemand sagen, wie ich in Threads mehrere Dialoge der gleichen Recource starten kann ?

Gruß

Die mehrfache Verwendung der Ressource ist nicht das Problem.

Wie hast du den Thread denn überhaupt gestartet? Als Workerthread oder als UI-Thread?

Und könntest du "Absturz" noch ein wenig präzisieren? Welcher der Threads stürzt ab? Fehlgeschlagene Assertion? Schutzverletzung? Genaue Fehlermeldung? Callstack?

Also gestartet als Workerthread mit:

AfxBeginThread(Funktionsname,this, THREAD_PRIORITY_NORMAL, 0, 0, NULL);

Ein Absturz beschieht dann sobald der zweite Thread bei

CDiaProzessBar *m_DiaProzessBar = new CDiaProzessBar();

m_DiaProzessBar->Create(CDiaProzessBar::IDD);

ankommt, was sich ja innerhalb der Threadfunktion befindet

Fehlgeschlagene Assertion? Schutzverletzung? Callstack? Bahnhof ?!?

Kannst Du die noch an die PN erinnern ? :confused: soweit bin ich leider nicht mit der Entwicklungsumgebung das ich da 'ne qualitative Auskunft geben kann, oder anders, isch ham kene Ahnung...

Ich weiß wohl das es Unterscheidungen zwischen Worker- und Oberflächenthreads gibt, aber da ist schon wieder Ende im Gelände.

Also gestartet als Workerthread
Das ist schon der Fehler. Workerthreads dürfen keine MFC-Fenster öffnen.

Ich weiß wohl das es unterscheidung zwischen Worker- und Oberflächenthreads gibt, aber da ist schon wieder Ende.
Um einen UI-Thread zu starten, musst du die andere Überladung von AfxBeginThread benutzen, die mit einem CWinThread-(oder davon abgeleiteten-)Objekt.

Aber warum erstellst du den Dialog eigentlich nicht im ursprünglichen UI-Thread?

  • 4 Wochen später...

Hat etwas gedauert.

Ich wollte den Dialog, eine Prozesssbar, als optisches Mittel nutzen damit der User weiß wie weit die Arbeit des Threads erledigt ist. Aktuell habe ich das roblem umgangen, ich laße es mit dem Dialog. Aber irgendwann muß ich da sowieso mal ran, von wegen GUI thread.

Danke für die Antworten

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

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.