diff options
-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) |