diff options
author | Erich Eckner <git@eckner.net> | 2022-06-26 21:53:25 +0200 |
---|---|---|
committer | Erich Eckner <git@eckner.net> | 2022-06-26 22:25:31 +0200 |
commit | b1cd013f38dfd80e526703bb34c37093ca1b2c3c (patch) | |
tree | 9ec6934155e00ebad239d5aec5cc71abd5acf54a | |
parent | 444c34deae44d796a8c25fd928e1b55d6c359582 (diff) | |
download | FH-Wetter-b1cd013f38dfd80e526703bb34c37093ca1b2c3c.tar.xz |
pegelunit.pas: fix synchronization (unlikely error)
-rw-r--r-- | pegelunit.pas | 23 |
1 files changed, 17 insertions, 6 deletions
diff --git a/pegelunit.pas b/pegelunit.pas index 9accaa8..1432b9e 100644 --- a/pegelunit.pas +++ b/pegelunit.pas @@ -57,12 +57,14 @@ type tPegelUpdateThread = class(tThread) private - _besitzer: tPegelStaende; - antwort: string; - ladeProzess: tProcess; - beendet: boolean; - nPegel: tPegelStation; + _besitzer: tPegelStaende; + antwort: string; + ladeProzess: tProcess; + beendet, + synchronized: boolean; + nPegel: tPegelStation; procedure uebernehmen; + procedure mySynchronize(aMethod: TThreadMethod); public beenden: boolean; constructor create(besitzer: tPegelStaende); @@ -359,6 +361,15 @@ begin _besitzer.einlesen(antwort); setlength(antwort,0); form1.zeichnen; + synchronized:=true; +end; + +procedure tPegelUpdateThread.mySynchronize(aMethod: TThreadMethod); +begin + synchronized:=false; + queue(aMethod); + while not beenden and not synchronized do + sleep(100); end; procedure tPegelUpdateThread.execute; @@ -400,7 +411,7 @@ begin if not beenden then begin setlength(antwort,bytesRead); - synchronize(@uebernehmen); + mySynchronize(@uebernehmen); if nPegel<high(tPegelStation) then inc(nPegel) |