@Whookie: Die beiden Threads werden schon richtig erzeugt, dass kann ich nachvollziehen, da ich einen überlagerten Constructor hab und der auch 2x aufgerufen wird. Die Threads sollten auch nicht einfach so beendet werden. Der Constructor und das Execute des Threads:
Delphi-Quellcode:
constructor devThread.create(arrid:integer);
begin
inherited create(False);
myid := arrid;
mycport := TComPort.Create(nil);
mycport.Port := devicearr[myid].SETTINGS.PORT;
mycport.BaudRate := devicearr[myid].SETTINGS.BAUD;
mycport.Parity.Bits := devicearr[myid].SETTINGS.PARITY;
mycport.StopBits := devicearr[myid].SETTINGS.STOP;
mycport.DataBits := devicearr[myid].SETTINGS.DATA;
mycport.FlowControl.FlowControl := devicearr[myid].SETTINGS.FLOW;
mycport.Events := [evRXChar,evRXFlag];
mycport.OnAfterOpen := afteropen;
mycport.OnRxChar := reseive;
end;
procedure devThread.Execute;
begin
{ Thread-Code hier einfügen }
while not terminated do
begin
mystate := devicearr[myid].STATE;
sleep(1);
end;
end;
@OlafSt: Der
Com-Port wird nicht beim kreieren des Threads geöffnet, daran kann es also nicht liegen.
Wie gesagt: Der constructor Create wird ordentlich gestartet nur wird immer das Execute der zuletzt kreierten Threads durchlaufen.
Das ist alles sehr seltsam ...