Announcement

Collapse
No announcement yet.

Probleme mit System.Net.WebClient

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Probleme mit System.Net.WebClient

    Hallo,

    ich möchte einen HTTP upload mit Progresbar machen.

    Daher scheiden die Methoden
    UploadFile oder
    UploadData aus.

    Die erledigen zwar ihren Job, aber man bekommt nicht mit, wie weit die sind.

    Also lese ich meine Datei häppchenweise binär aus und möchte sie mit
    OpenWrite verschicken.
    Im LAN klappt das auch, schicke ich jedoch ins Internet, sieht man dass die Methode zwar immer behauptet, sie sei fertig und das Programm schickt demnach den nächsten Block.
    Kurz vor 100% friert das Programm scheinbar ein, am Switch sehe ich jedoch das der Rechner noch ins Netz schickt. Nach einiger Zeit kommt dann eine Exception. Sieht irgendwie nach Pufferüberlauf aus.

    Wie kann ich sicherstellen, dass die OpenWrite Methode wirklich fertig ist, wenn sie zu meinem Programm zurückkehrt?

    Oder wie bekomme ich das ganze asynchron hin?

  • #2
    Hallo zusammen,

    das Problem habe ich selber in den Griff bekommen. Nachdem ich feststellen musste, dass die Klasse System.Net.WebClient auch aus anderen Gründen völlig ungeeignet für meinen Anwendungsfall ist: diese Klasse stellt die Verbindung zum Webserver über einen sogenannten "Buffered Stream" zur Verfügung. Dies hat a) den Nachteil des geschilderten Verhaltens, das Programm sendet die Daten nicht direkt an den Webserver, sondern an einen Puffer. Deshalb ging der Balken so schnell gegen 100%, weil der Puffer die entgegen genommen hat. Zusätzlich gint es b) den Nachteil, dass man bei dieser Art Stream NUR Lesen ODER Schreiben kann. Für die Interaktion mit einem Webserver - in meinem Fall - völlig ungeeignet.
    Bei mir kommt jetzt ein Socket und ein NetworkStream aus der KLasse System.Net.Sockets zu Einsatz. Hier muss ich zwar den komletten HTTP-Header selber zusammenbauen, ist aber nicht weiter tragisch, da ich den MIME-Header für die Daten eh schon selber gesendet habe

    Comment

    Working...
    X