Was ist die beste Vorgehensweise, um eine Webanfrage asynchron zu erhalten?
Ich möchte eine Seite aus dem Internet herunterladen (egal was) und vermeiden Sie, einen Thread so gut wie möglich zu blockieren.
Früher glaubte ich, dass es genügt, nur das Paar "BeginGetResponse" und "EndGetResponse" zu verwenden. Aber bei näherer Betrachtung sehe ich auch, dass es die Möglichkeit gibt, 'BeginGetRequestStream' zu verwenden.
[UPDATE] GetRequestStream wird für POST-Vorgänge verwendet
Und dann, um die Verwirrung hinzuzufügen, sollte ich stream.BeginRead und EndRead verwenden?
[UPDATE] Dieser Artikel schlägt vor, dass es noch besser ist, die HttpResponse zu verarbeiten .GetResponseStream asynchron mit Stream.BeginRead
Was für ein Durcheinander!
Kann mir jemand in die richtige Richtung zeigen?
Was ist die beste Praxis?
Sie könnten das alles selbst programmieren oder Sie könnten einfach den WebClient verwenden, der eine Menge Arbeit für Sie erledigt. Um beispielsweise eine Datei als Zeichenfolge herunterzuladen, rufen Sie DownloadStringAsync () auf, wodurch schließlich das OnDowloadStringCompleted-Ereignis ausgelöst wird. Wenn die Datei binär ist, können Sie stattdessen versuchen, DownloadDataAsync () zu verwenden.
Sie verwenden Begin / EndGetResponse, um asynchron auf die HTTP-Antwort zu warten. Wenn Sie einen POST ausführen und viele Daten asynchron senden müssen, verwenden Sie Begin / EndGetRequestStream.
Dies ist nicht auf asynchrone Kommunikation beschränkt - Sie können die synchronen Versionen nachsehen, um zusätzliche Informationen zu erhalten.
Ich bin mir nicht sicher, warum Sie im Request-Stream eine Read-Funktion ausführen - wahrscheinlich schreiben Sie dazu und lesen aus dem Response-Stream.
Schließlich Jeffrey Richters Blog hat einen Artikel über einige der Feinheiten von HttpWebRequest und Streams .
Haben Sie in Betracht gezogen, die Webanfrage in einem neuen Thread auszuführen?
Tags und Links .net asynchronous httpwebrequest