Ik wil dat het uitlezen van een TIdTCPClient in een thread gebeurd. Daar had ik de volgende oplossing voor bedacht. Dit is alleen de Execute procedure van een eigen TThread object:
Dit werk aardig goed. Maar als de TCPClient verbroken wordt dat treedt er een exception op ("Not Connected") op de ReadLn regel.
Hoe kan dit aangezien ik toch steeds controleer of de verbinding nog bestaat. Doe ik iets heel erg verkeer in deze oplossing?
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| procedure TTCPClientReader.Execute;
var
Line: String;
begin
while FTCPClient.Connected do
begin
try
Line := FTCPClient.ReadLn;
if Line <> '' then
begin
FData := Line;
Synchronize(DoNewLineEvent);
end;
except
FTCPClient.Disconnect;
end;
end;
end; |
Dit werk aardig goed. Maar als de TCPClient verbroken wordt dat treedt er een exception op ("Not Connected") op de ReadLn regel.
Hoe kan dit aangezien ik toch steeds controleer of de verbinding nog bestaat. Doe ik iets heel erg verkeer in deze oplossing?
"The shell stopped unexpectedly and Explorer.exe was restarted."