Zum Inhalt springen

Dialog im Thread Starten Fehler


Empfohlene Beiträge

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ß

Link zu diesem Kommentar
Auf anderen Seiten teilen

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?

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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?

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 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

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