> My code is basically a state machine. In the FtpRequestDone event, 
> it decides what to do next. 

I used a similar state machine in another application, but prefer the
sync calls for complex applications, and then use a thread per transfer.
TMagFtp has been tested with 200 simultaneous downloads. 

You do have to be very careful not to call the message pump from within
RequestDone or things can get very confused.  Do not call any sync
methods that will call the message pump, ie only call CwdAsync not Cwd. 

> So the question is: What are you doing in your demo that is 
> different.

Using sync methods with WaitUntilReady which loops calling the message
pump until State is ftpReady or ftpInternalReady, rather than expecting
the FtpRequestDone event to be called. 

It is possible there is a strange component bug and the state is being
changed without FtpRequestDone being called.  My component does not use
FtpRequestDone atall.  

You could try checking the StateChange event as well to see if that is
called when your transfer finishes, or just check the State property in
the fail safe timer I assume you have running to handle errors and stop
the application waiting for days. 

> Wireshark shows you are doing ALLO

Not sure why you using Wireshark, the FTP component has all the events
you need to log the FTP protocol, even without the logger component.  

Angus

--
To unsubscribe or change your settings for TWSocket mailing list
please goto http://lists.elists.org/cgi-bin/mailman/listinfo/twsocket
Visit our website at http://www.overbyte.be

Reply via email to