Laden...

Webclient DownloadStringAsync Problem

Erstellt von Taxi4110 vor 13 Jahren Letzter Beitrag vor 13 Jahren 2.144 Views
T
Taxi4110 Themenstarter:in
61 Beiträge seit 2005
vor 13 Jahren
Webclient DownloadStringAsync Problem

Hallo Community,

ich weiß nicht genau, wie ich die Funktion richtig nutzen soll. Ich hab folgende Funktionen:


public class Normal
{
protected string ExecuteGetCommand(string url, string userName, string password)
        {
            WebClient client = new WebClient();
            client.Credentials = new NetworkCredential(userName, password);
            client.DownloadStringCompleted += new DownloadStringCompletedEventHandler(client_DownloadStringCompleted);
            client.DownloadStringAsync(new Uri(url));

//return ?? help
}

void client_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
        {
            // help
        }
}

private class Extend
{
private void DoThing()
{
string url = "http://someurl";
string user = "user";
string pass = "pass";

Normal norm = new Normal();

string result = norm.ExecuteGetCommand(url, user, pass);
}
}

Mir ist klar, dass das so nicht funktioniert. Meine Frage ist: Wie kann ich das ganze so erweitern, dass wenn der Webclient seinen Async Aufruf erfolgreich beendet hat den abgerufenen String zurück gibt, sodass die Methode DoThing() den String erhält?

32 Beiträge seit 2010
vor 13 Jahren

Ich würde dir in diesem Fall dazu raten, das ganze nicht asynchron zu machen, da du den Rückgabewert in derselben Methode brauchst.


protected string ExecuteGetCommand(string url, string userName, string password)
{
      WebClient client = new WebClient();
      client.Credentials = new NetworkCredential(userName, password);
      string str = client.DownloadString(new Uri(url));
      client.Dispose();
      return str;
}

Der Thread, der das ganze ausführt wird halt dann für den Web-Request verwendet, was in einer Windows-Forms Application dazu führen kann, dass alles ein klein wenig hängt.

#define struct union[

T
Taxi4110 Themenstarter:in
61 Beiträge seit 2005
vor 13 Jahren

Silverlight lässt das ganze leider nur Async zu 😦

32 Beiträge seit 2010
vor 13 Jahren

Dann musst du wohl oder übel das Handling des Strings im Event-Handler machen und auf den Rückgabewert verzichten. =(.

Ich denke, das wird kein so großes Problem sein?

#define struct union[