004
17.09.2005, 11:38 Uhr
Spacelord
Hoffnungsloser Fall
|
Schau dir mal die Funktionen CreateTimerQueue,RegisterWaitForSingleObject und CreateTimerQueueTimer an. Damit kannst du in bestimmten Intervallen deine benutzerdefinierte Funktion aufrufen lassen oder aber auch ein Event nutzen um die Funktion aufzurufen. Der Funktion wird mitgeteilt ob der Aufruf aufgrund eines Events oder durch Ablauf der Zeit betreten wird. Damit sollte sich was machen lassen. Die Timerfunktion läuft übrigens in nem eigenen Thread um den sich komplett Windows kümmert. Alternativ dazu gibt es irgendwo im Netz auch nen Artikel von Jeffrey Richter..... ...........................
Gefunden: www.microsoft.com/msj/archive/SFFF.aspx
Vom Prinzip her wird hier auch nen Worker Thread erstellt,der in deinem Fall, deine Timermethode abarbeiten würde. Um den Thread aber jederzeit stoppen zu können ohne dauernd irgendeine Variable abzufragen bedient er sich eines kleinen Tricks. Ganz grob funktioniert es etwa so: Der Workerthread arbeitet mit Speicher der vom primären Thread,über VirtualAlloc belegt wurde.Wenn der Thread jetzt beendet werden soll gibt der primäre Thread diesen Speicher mit VirtualAlloc wieder frei.Beim nächsten Zugriff auf den Speicher innerhalb des Workerthreads gibt es ne AccessViolation die mit einem entsprechendem Exceptionhandling abgefangen wird und eventuelle Aufräumarbeiten ausgeführt werden. Ist natürlich nen ziemlicher Aufwand,aber wer besonderes haben möchte muss besonderes machen....
Mit nem einzelnen Thread wirst du dein Ziel wohl nicht erreichen.Mal angenommen dein Thread ist damit beschäftigt deine Timermethode abzuarbeiten und innerhalb der Methode wird ständig eine Statusvariable abgefragt.Wer sollte diese denn ändern während du in der Methode bist?
MfG Spacelord -- .....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes. |