summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorErich Eckner <git@eckner.net>2022-06-26 21:53:25 +0200
committerErich Eckner <git@eckner.net>2022-06-26 22:25:31 +0200
commitb1cd013f38dfd80e526703bb34c37093ca1b2c3c (patch)
tree9ec6934155e00ebad239d5aec5cc71abd5acf54a
parent444c34deae44d796a8c25fd928e1b55d6c359582 (diff)
downloadFH-Wetter-b1cd013f38dfd80e526703bb34c37093ca1b2c3c.tar.xz
pegelunit.pas: fix synchronization (unlikely error)
-rw-r--r--pegelunit.pas23
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)