R
Also erstmal danke für deine Antwort !!
Habe das jetzt auch so, dass im Timer-Event nur der Funktionsaufruf ist.
Habe es folgendermaßen bis jetzt:
-Bevor die Funktion in OnTimer aufgerufen wird, wird geprüft, ob eine bestimmte bool-Variable gesetzt ist, wenn ja mach ich ein SetEvent(m_TimerCloseEvent), dass ich in OnInitialUpdate created und auf nonsignaled gesetzt habe
-ich setzte im Stop-Button-Handler die bool auf true, dann "sieht" der Timer das und setzt das Event, vorher hab ich noch den Thread beendet
-im Button-Handler warte ich mit WaitForSingleObject darauf, wenn ich innerhalb des Timeouts bin, gehe ich einfach weiter und mache noch den Rest, wenn Timeout abgelaufen ist, dann kille ich einfach den Timer und mache dann normal weiter
-wenn wieder auf Start geklickt wird, dann setze ich mein Event mit ResetEvent(m_hTimerCloseEvent) wieder auf nonsignaled
So funktioniert das bis jetzt, kann es erst wieder am Montag probieren, dann werde ich es sehen
Die Hauptsache ist eigentlich, dass mir keine Daten verloren gehen.
Ich hoffe, dass meine Vorgehensweise zum korrekten Beenden führt.
EDIT:
der Code von oben sieht jetzt noch etwas anders und "sinnvoller" aus:
CSingleLock singLock(&m_mut);
if (singLock.Lock(0))
{
if (!m_pDoc->list.IsEmpty()) // wenn Liste noch nicht leer ist...
{
WeatCopy = m_pDoc->list.RemoveHead();
singLock.Unlock();
FillListCtrl(WeatCopy);
}
}
if (singLock.IsLocked())
singLock.Unlock();