summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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)