Message Überlauf
-
Hallo leute,
ich sende via PostMessage ein event von einem thread aus an eine fenster. Wie kann ich es verhindern, das der thread nochmal ein event schickt wenn das fesnter gerade dabei ist das alte zu verarbeiten...
SendMessage wäre ja syncron, aber das sollte man aus thread raus nich verwenden.. wäre SendMessageTimeout ne lösung?
-
Wie wäre es mit ausprobieren?
-
Indem Du eben Mechanismen schaffst, die das verhindern!
1. Alle Zugriffe müssen über eine CrticalSection in beiden Threads begeischert werden.
2. Schreibender Thread lockt Datenbereich, speichert neue Daten.
3. Ist das Flag NeueDaten nicht gesetzt wird es gesetzt und eine Nachricht gepostet.
4. Lesender Thread bekommt Nachricht, lockt Datenbereich. Liest Daten und setzt Flag zurück.So ist immer nur eine Nachricht unterwegs...
Ansonsten kannst Du PeekMessage verwenden und nachsehen, wenn das Fenster im selben Thread liegt.
-
indem du die vorgesehenen Funktionen bebutzt.
Für Kommunikation per Event zwischen Threads gibts unter anderem einerseits CreateEvent(), SetEvent() ResetEvent() und unter anderem andererseits WaitForSingleObject().
Guck mal nach "Synchronization Functions"
Ulli