> 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