Datei für Datei auf einen FTP Server - Schleifenproblem

  • VB.NET

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von ultrasn0w.

    Datei für Datei auf einen FTP Server - Schleifenproblem

    Guten Abend Forum

    Zurzeit programmiere ich an einem FTP Upload Manager. Ich habe jetzt folgendes Problem:

    Irgendwie krieg ich es nicht hin, nacheinander Dateien auf einen FTP Server zu laden (Kann doch nicht so schwierig sein ?( )
    Ich habe eine Listbox (namens Liste) in der ich eine beliebige Anzahl Items habe. Nun habe ich mir das so vorgestellt:

    1. Index selektieren
    2. Upload des selektierten Items starten
    3. Ist Upload des selektierten Items fertig -> Nächster Index selektieren und von vorne anfangen

    Ich habe schon folgenden Codeschnipsel:

    VB.NET-Quellcode

    1. For i = 0 To Liste.Items.Count - 1
    2. Liste.SelectedIndex = i
    3. Client.Credentials = New Net.NetworkCredential("Username", "Passwort")
    4. Dim serverUri As New Uri("URL" & Liste.SelectedIndex)
    5. Client.UploadFileAsync(serverUri, Liste.SelectedIndex)
    6. Next


    Kann mir jemand weiterhelfen? Ich habe schon viel Zeit damit verbracht etwas brauchbares zu finden, leider ohne Erfolg :S

    CrazyFruit schrieb:

    Ich habe schon folgenden Codeschnipsel:

    Und? Passiert nix, kommt Fehler?

    Anmerkungen:
    - Mit SelectedIndex zu arbeiten ist ein in diesem Forum weit verbreiteter Unsinn.
    - Wenn man die "Async" Methoden verwendet muss man natürlich auch die entsprechenden Callbacks/Events verwenden, weil dieser Aufruf ja non-blocking ist und dadurch gleich weitergearbeitet wird.
    1. Index selektieren
    2. Upload des selektierten Items starten
    3. Ist Upload des selektierten Items fertig -> Nächster Index selektieren und von vorne anfangen
    Soll der User den Index selektieren oder soll das Programm alle Items abarbeiten? Wo genau liegt denn das Problem? Fehlermeldungen?

    VB.NET-Quellcode

    1. For i = 0 To Liste.Items.Count - 1
    2. Liste.SelectedIndex = i
    3. Client.Credentials = New Net.NetworkCredential("Username", "Passwort")
    4. Dim serverUri As New Uri("URL" & Liste.SelectedIndex)
    5. Client.UploadFileAsync(serverUri, Liste.SelectedIndex)
    6. Next

    Warum nutzt Du SelectedIndex? Geht einfacher:

    VB.NET-Quellcode

    1. Liste.Items.Item(i)


    An den Anfang der Prozedur könntest Du eine While-Schleife erstellen die prüft, ob der WebClient bereits beschäftigt ist.
    OK danke soweit

    Das Programm soll den Index selektieren (immer den obersten und alle Einträge durchgehen). Das Problem ist, dass er die erste Datei lädt, die 2. aber nicht mehr (und die 3. usw). Fehlermeldungen gibt es soweit keine.

    OK werde nicht mehr mit Selectedindex arbeiten... danke für die Anmerkung ;)

    EDIT: Es kommt immer "Webclient unterstützt keine gleichzeitigen E/A-Vorgänge." Warum erscheint die?

    @picoflop was meinst du mit Callbacks/Events und non-blocking? habe diese Begriffe noch nie gesehen/gehört :pinch:

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „CrazyFruit“ ()

    Da ich keinen neuen Thread eröffnen möchte, kommt das einfach hier mit rein ;).
    Bei mir erscheint der selbe Fehler wie bei CrazyFruit.

    VB.NET-Quellcode

    1. For Each strFileName As String In ofd.FileNames
    2. onlyname = System.IO.Path.GetFileName(strFileName)
    3. filesize = My.Computer.FileSystem.GetFileInfo(strFileName).Length
    4. 'LBdatesize.Items.Add(filesize & " Byte")
    5. 'LBfilenames.Items.Add(onlyname & " - Erfolgreich! ")
    6. 'LBtime.Items.Add(My.Computer.Clock.LocalTime.Hour & ":" & My.Computer.Clock.LocalTime.Minute & ":" & My.Computer.Clock.LocalTime.Second & vbNewLine)
    7. .Credentials = New NetworkCredential(ftpusr1, ftppw1)
    8. .UploadFileAsync(New Uri("ftp://" & ftphost & ":21/" & onlyname), strFileName)
    9. Next


    Die 3 Sachen sind auskommentiert weil das noch ein anderes Problem darstellt, Threadübergreifende Vorgänge :D
    Aber dazu nicht jetzt ;).

    Wenn ich nun mehrere Daten auswähle kommt eben der selbe Fehler:
    Webclient unterstützt keine gleichzeitigen E/A-Vorgänge.


    Gruß