OK, this problem has been bugging me for months and finally I think I sort of know what part of the problem is.

I have a server exe that processes creatures and players.

The server in simple terms is:-

while not bStop do
begin
ProcessCreatures;
Application.ProcessMessages;
end;


On the TIdTCPServer I have an event command for client movement.

When the client moves, it send the packet to this server, which takes 15 ticks to process at worst (not a lot). But... The packet isn't getting processed until as long as a second later. How can I force these damn packets to process?

I have tried loads of application.process messages everywhere. I have put an extra check in the main loop that states 'if time taken for loop run is less than 1 second, then just do application.processmessages for remaider, and even following the suggestions on other forums I tried Sleep(remainder);

Suggestions please!!

My personal theory is that its the Threading used by the Indy components, but how can I up the priority of the indy threads?