Timer->Erst nach beenden der Funktion neustarten
-
Hallo,
ich habe einen Timer, in dem wird alle 100ms eine Funktion gestartet, nun kann es aber sein das in bestimmten Situationen im Timer Sleep() verwendet wird, doch wenn es dann insgesamt über die dauer des Timers geht stürzt das Programm ab.
Deshalb will ich das der Timer erst weitermach wenn die Funktion bis zum Ende ausgeführt wurde, also wenn eine Funktion 10 Sekunden braucht dann will das der Timer für 10 Sekunden aussetzt.
Wie mach ich das am besten?
Mfg. BNS
-
Ich glaube IMHO nicht das das Sleep mit dem Absturz zu tun hat...
Auch ist es ein äusserst schlechtes Design ein Sleep im UI-Thread zu machen!!! Mach bitte einen eigenen Thread für Deine "Arbeit".
-
Mal ne ganz blöde Frage, wie erstelle ich einen Thread?
-
Schau in der Hilfe nach "ThreadStart" (.NET) oder _beginthread (native).
-
Soweit ich das aus der MSDN entnehmen kann, ist ein Thread doch nur eine normale Funktion, oder verstehe ich da was falsch.
-
-
Also kann ich mit:
ThreadStart* myThreadDelegate = new ThreadStart(0, &ThreadWork::DoWork); Thread* myThread = new Thread(myThreadDelegate); myThread->Start();
meiner Funktion einen Thread zuweisen. Aber wird er dan immer ausgeführt oder nur einmal oder bis er beendet wird?
-
Ein Thread wird so lange ausgeführt bis die Thread-Funktion rausspringt...
Aber warum machst Du dort keine "Schleife"?
-
Das würde doch den PC total überlasten, oder?
-
Ich dachte Du machst was mit Sleep?
Besser ist natürlich einen "sinnvollen" Synchronisation-Mechanismus zu verwenden!
-
Was verstehst du unter "Synchronisation-Mechanismus"?