FTP-Upload multiple Uploads mit einer Connection

dignsag

Erfahrenes Mitglied
Hallo liebe Mitglieder,

ich habe einen kleinen FTP-Uploader geschrieben und zwar mit der FtpWebRequest-Klasse. Funktioniert alles wunderbar, er lädt alles sauber hoch usw, supi.
Nur das ganze läuft ziemlich langsam, da er für jede neue Datei eine neue Verbindung aufbauen muss, da ich in der VerbindungsURI schon den Dateinamen angeben muss (z.B. ftp://ftp.beispiel.de/test/test.txt).

Ich habe gelesen das es hier eine Möglichkeit geben soll mehrere Uploads mit einer Connection zu öffnen, was die Performance erheblich steigern dürfte. Nur finde ich selbst leider weden in der Klasse (auch nicht in der MSDN) noch im Internet irgendeinen Hinweis wie man das angehen muss.

Ich brauche warscheinlich nur einen kleinen Anstoß, wie ich der Klasse zur Laufzeit eine neue URI übergeben kann, dann würde das schon funktionieren.

Danke schonmal.

Gruß Dignsag
 
Hi!

Du bräuchtest hierfür einen ThreadPool. Den standard ThreadPool vom Framework würde ich aber nicht verwenden, da er für mich bisher mit seinen 25 Threads nicht ausgereicht hat und zudem auch echt langsam verwaltet wird. Dann benötigst mehrere Instanzen deines Ftp-Wrappers, die Du in deinem ThreadPool verwalten musst.

Die Realisierung sollte nicht allzu schwer sein. Du hast eine Dateiliste. Diese Dateiliste arbeitest von Anfang bis Ende ab und erzeugst für jede Datei eine neue Instanz deines Ftp-Wrappers und schiebst sie deinen ThreadPool. Das machst immer solange bis die maximale Anzahl an Threads erreicht wurde und wartest dann bis ein Thread wieder fertig ist.

Dann benötigst eine Ereignisbehandlung in der alle Statusereignisse deiner Ftp-Wrapper Instanzen zusammen laufen.

Wichtig währe hier, dass Du dabei alle Thread-übergreifende Zugriffe synchronisierst um Fehlern vorzubeugen. Die Notwendigkeit dessen und die dafür verfügbaren Werkzeuge erläutert Dir mein Tutorial [thread=260455]Multi-Threading - Teil1: Einführung[/thread].
 

Neue Beiträge

Zurück