Veröffentlicht 2. Juli 200718 j 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ß
3. Juli 200718 j 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?
3. Juli 200718 j 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.
3. Juli 200718 j Also gestartet als WorkerthreadDas 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?
1. August 200718 j 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.