Thanks for the clarification, I appreciate it.

As a side note, I'm switching all of my code from Indy to ICS.  The performance 
benefits are already paying off.  What originally motivated the change was that 
the Indy code doesn't scale well at all.  In just one example during my 
investigation, I found that the TCP client creates a separate hidden thread for 
each connection just for the timeout - I couldn't believe this is what the code 
was doing. The rate of thread creation/destruction just for this was crippling.

Anyway, thanks to everyone on the ICS team for this alternative.  I do have one 
question though, have there been any thoughts of providing an IOCP 
implementation of ICS?  I've heard a lot about IOCP and wondered how much 
benefit (if any) such an implementation would have over standard asynchronous 


-----Original Message-----
From: Arno Garrels [] 
Sent: Tuesday, November 06, 2012 10:35 PM
To: ICS support mailing
Subject: Re: [twsocket] Why is TWSocket.OnDataSent being called twice?

Doug Billi wrote:
> I've implemented a TWSocket client using a state machine, but after I 
> send the data using SendStr(), the OnDataSent() event gets fired 
> twice.

That is normal behaviour. After a Connect two select messages are received from 
winsock, FD_Connect and FD_Write. The latter triggers DataSent.
Then after a Send DataSent triggers again.


To unsubscribe or change your settings for TWSocket mailing list
please goto
Visit our website at

Reply via email to