Programm soll nicht "einfrieren"
-
Hallo,
wenn ich eine Funktion hab die etwas zeitaufwendiges durchführt (z.B. einen Ordner der viele Dateien enthält durchsuchen), wie kann ich dann erreichen dass der Benutzer trotzdem mit dem Programm weiterarbeiten kann, heißt das die Buttons und ähnliches reagiert? Gibts dafür eine Funktion oder eine andere Lösung ohne Threads?
Wenn ich mich recht erinner war das beim BCB "ProcessMessages()", aber bei VC gibts das ja nicht...Gruß,
Michel
-
Hi!
Wieso willst du denn auf Threads verzichten?
-
Hi,
soll nur ein ganz kleines Programm werden für den "Hausgebrauch" was ich nur einmal benutze, da würde sich der Aufwand eigentlich gar nicht lohnen.
-
welcher Aufwand? eine zusätzliche Funkion zu schreiben?
-
Wo kann man denn was über Threads erfahren ?
Wie funktioniert das überhaupt ?Meine Anwendung friert auch immer ein

-
Nur eine zusätzliche Funktion? Ich bin ja kein Thread-Experte, aber muss ich da nicht mindestens eine Klasse von CWinThread ableiten und die Run()-Funktion überschreiben? Ich dachte diesem Einfrieren kann man vielleicht noch mit was anderem entgegenwirken.
Schuhwerk:
Hier steht was über Threads:
http://www.c-plusplus.net/forum/viewtopic.php?t=39101
http://www.c-plusplus.net/forum/viewtopic.php?t=39041
-
Quatsch
, AfxBeginThread() und eine Thread-Methode genügen. Da brauch man keine eigene Klasse für erstellen. Schaut mal in die FAQ.
-
Der Michel schrieb:
Nur eine zusätzliche Funktion? Ich bin ja kein Thread-Experte, aber muss ich da nicht mindestens eine Klasse von CWinThread ableiten und die Run()-Funktion überschreiben? Ich dachte diesem Einfrieren kann man vielleicht noch mit was anderem entgegenwirken.
Schuhwerk:
Hier steht was über Threads:
http://www.c-plusplus.net/forum/viewtopic.php?t=39101
http://www.c-plusplus.net/forum/viewtopic.php?t=39041wayne interessierts was das steht... Du brauchst nur eine static Methode und dann rufst du AfxBeginThread und übergibts den this Zeiger. Nach dem Aufruf wird die statische Funktion aufgerufen. Du castest den ersten Parameter in deine Klasse und rufst die nötige Klassenmethode.
Funktionskopf der statischen Methode:
UINT MyFunction(LPVOID pParam);zusätzlich guckst du hier: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vclib/html/_mfc_afxbeginthread.asp
EDIT: und nein, es gibt keine andere Lösung außer Threads.
-
Tatsache

Ist ja wirklich nicht so aufwendig wie ich dachte.
Besten Dank für den Tip.