با عرض سلام خدمت دوستان بزرگوار

من یه برنامه سرور دارم که بهنگام اتصال کلاینتها چکی انجام میدم و اگر شرایط موردنظر برقرار نباشد ، آن کلاینت را دیسکانکت می کنم.
در زمان اتصال این کد را دارم.
ضمناً سرورم از نوع TTCPServer هست.

procedure TA1.ServerConnect(Client: TTCPConnection);
var s : string;
i: integer;
begin // OnConnect Client to this Server.
S := Client.ReadLn();
if (LeftStr(s ,9) = 'AN=220') and (MainServerShape.Brush.Color <> CLLime)
then
begin
Client.Disconnect;
exit;

end;
end;



که وقتی شرایط مورد نظر موجود نباشد کلاینت دیسکانکت میشود.
ولی حالا چرا وقتی با کد زیر تعداد کلاینتهای متصل به سرور رو میگیرم با هر کانکت کلاینت به سرور این تعداد اضافه میشود ولی وقتی دستور دیسکانکت انجام میشود، علارغم اینکه آن کلاینت دیسکانکت شده است ولی تعداد کلاینتها کم نمیشود.


procedure RefreshListBox1;
var i : Integer;
NumClients: Integer;
begin
with A1.Server.Connections.LockList do
try
NumClients := Count;

finally
A1.Server.Connections.UnlockList;
end;
ShowMessage('There are currently ' + IntToStr(NumClients) + ' client(s) connected');

end;



دوستان میشه لطفاً راهنمایی بفرمائید.