DownloadStringAsync () не загружает строку асинхронно - PullRequest
3 голосов
/ 25 мая 2011

Попытка реализовать downloadStringAsync() для предотвращения зависания пользовательского интерфейса на 10 секунд при загрузке одного байта данных. Однако, несмотря на то, что загрузка завершается, пользовательский интерфейс замораживается так же, как если бы я использовал downloadString().

Вот мой код:

    public void loadHTML()
    {
            WebClient client = new WebClient();

            // Specify that the DownloadStringCallback2 method gets called
            // when the download completes.
            client.DownloadStringCompleted += new DownloadStringCompletedEventHandler(loadHTMLCallback);
            client.DownloadStringAsync(new Uri("http://www.example.com"));
            return;
    }

    public void loadHTMLCallback(Object sender, DownloadStringCompletedEventArgs e)
    {
        // If the request was not canceled and did not throw
        // an exception, display the resource.
        if (!e.Cancelled && e.Error == null)
        {
            string result = (string)e.Result;

            // Do cool stuff with result

        }
    }

1 Ответ

2 голосов
/ 06 апреля 2014

Обнаружил ту же проблему и нашел решение. Довольно сложное обсуждение здесь: http://social.msdn.microsoft.com/Forums/en-US/a00dba00-5432-450b-9904-9d343c11888d/webclient-downloadstringasync-freeze-my-ui?forum=ncl

Короче говоря, проблема в том, что веб-клиент ищет прокси-серверы и зависает приложение. Помогает следующее решение:

WebClient webClient = new WebClient();
webClient.Proxy = null;
... Do whatever else ...
...