From b1cd013f38dfd80e526703bb34c37093ca1b2c3c Mon Sep 17 00:00:00 2001 From: Erich Eckner Date: Sun, 26 Jun 2022 21:53:25 +0200 Subject: pegelunit.pas: fix synchronization (unlikely error) --- pegelunit.pas | 23 +++++++++++++++++------ 1 file 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