I love indy9 and believe they're smart to use blocking sockets, but that presents a problem for me. i need to break all of my FTP and HTTP _object_s out of the main VCL thread. now i've done this successfully for extremely simple operations but i feel i need to learn a lot more about threading in delphi 6 before i can successfully encapsulate one of these _object_s into another thread. like right now i'm working on an AutoUpdate _object_ that decends from IdHTTP class. i don't want the _object_ to freeze the application while i try to connect and download the patch, if the user sees fit. i've got atleast 6 procedures that i'm calling and i want them all to be in a single thread outside of the main VCL thread. as far as i know, you can't just make an _object_ descendent of TThread class and BLAM! it's all threaded for you, i know you've gotta use the freakin Execute method (with no parameters, not even a stinkin pointer) so i find myself coming up with interesting ideas that just result in too much work when i would like to use this _object_ in a number of projects. i'm trying to design the _object_ in such a way that i can simply include the unit in my uses clause, create the _object_ assigned to a var, and call : CheckForUpdate, on completion i guess it'll call a procedure with the result of TRUE or FALSE if there's an update; DownloadUpdate, guess it'd call a procedure too with result TRUE if success, etc... neways, i need a good book or site that can give me amples of information on multithreading in delphi6. preferably either of these have information about how to execute several different procedures at different times (i guess using the Execute method) or, if possible, put the whole dang _object_ into a thread. *aura of threading frustration*

-MuffinMan