Kann sein, dass ich da jetzt vollkommen falsch liege oder es hängt mit den benutzten Komponenten zusammen, aber ich dachte, da Daten über ein Socket kommen eh in einem Extra-Thread rein, der sich mit deinem Haupt-Thread synchronisiert und Dir dann ein Event wirft, dass etwas an Daten angekommen ist.
Rein technisch gesehen bräuchtest Du dann nur mehrere Objekte, die zum einem den download (das file) und auch die Verbindung für den Empfang verwalten.
_________________
"Ich bin bekannt für meine Ironie. Aber auf den Gedanken, im Hafen von New York eine Freiheitsstatue zu errichten, wäre selbst ich nicht gekommen." - George Bernhard Shaw