DownloadStringAsync等待请求完成

Mer*_*ith 12 c# asynchronous request httprequest downloadstring

我正在使用此代码来检索网址内容:

private ArrayList request(string query)
{
    ArrayList parsed_output = new ArrayList();

    string url = string.Format(
        "http://url.com/?query={0}",
        Uri.EscapeDataString(query));

    Uri uri = new Uri(url);

    using (WebClient client = new WebClient())
    {
        client.DownloadStringAsync(uri);
    }

        // how to wait for DownloadStringAsync to finish and return ArrayList
    }
Run Code Online (Sandbox Code Playgroud)

我想使用DownloadStringAsync因为DownloadString挂起应用程序GUI,但我希望能够返回结果request.我怎么能等到DownloadStringAsync完成请求?

小智 26

使用Dot.Net 4.5:

 public static async void GetDataAsync()
        {           
            DoSomthing(await new WebClient().DownloadStringTaskAsync(MyURI));
        }
Run Code Online (Sandbox Code Playgroud)


Pau*_*erø 23

你为什么要等待...这将像以前一样阻止GUI!

var client = new WebClient();
client.DownloadStringCompleted += (sender, e) => 
{
   doSomeThing(e.Result);
};

client.DownloadStringAsync(uri);
Run Code Online (Sandbox Code Playgroud)