Threads
-
Hi gibts ne Möglichkeit das folgendermaßen zu handeln :
int Funktion() { ... // fange an etwas zu tun AfxBeginThread(thrdFunc,this); // starte Thread if(AfxEndThread(n,1)) { ... // wenn thread beendet ist, weitermachen } }Also das ich praktisch die Funktion warten lasse bis er mit dem Thread fertig ist.
-
die funktion wird nicht warten - das ist ja der sinn eines threads - due funktion laeuft durch und der thread laeuft separat weiter
am besten du sendest dann vom thread heraus eine "bin fertig" message die du abfaengst
alsothread starten
dialog fuer bitte wartem modal starten
wenn thread fertig ist, eine "bin fertig" message an den bitte warten dialog senden,
diese beendet sich und das programm kann weiter machen
-
1. AfxEndThread terminiert den aktuellen Thread und keinen anderen Thread.
2. Kannst Du mit dem returnierten CWinThread prüfen ob der Thread noch aktiv ist, solange m_bAutoDelete nicht gesetzt ist!
-
Danke aufjedenfall für die Antworten, ich habs jetzt das Programm einfach ein bischen umgeschrieben, damit ich eben beim starten des Threads schon am Ende der Funktion bin...
-
Hmmm also ich hab jetzt ein anderes Problem, aber es geht wieder um Threads.
Ich hab folgenden Thread um eine Datei auf einen FTP hochzuladen :
... while(...) // Datei wird gelesen { ... // Datei wird auf den FTP geschickt if(pThis->Beenden == 1) // Beenden Button wurde gedrückt { ... // wurde beendet } }Während des Uploads wird mein Hauptprogramm geschlossen und ein Dialogfeld öffnet sich. In diesem Dialogfeld will eben einen 'Abbrechen' Button verwenden.
Leider funktionierts irgdnwie nicht :void CFenster::OnBnClickedButton3() { CFTP2Dlg *m_dlg; m_dlg->Beenden = 1; }Damit will ich eben Beenden auf '1' stellen um das Uploaden zu beenden, aber statdessen bekomme ich eine Fehlermeldung
Mein Programm stürtzt ab, weiss einer warum ?
-
ok habs schon, hab einfach Beenden als Variable vom neuen Dlg gemacht und greife jetzt anders auf ihren Wert zu, passt