2010-04-13 3 views
1
using (var client = new WebClient()) 
       { 
        html = client.DownloadString(some_string); 
        //do something 
        html = client.DownloadString(some_string1); 
        //do something 
html = client.DownloadString(some_string2); 
        //do something 
html = client.DownloadString(some_string3); 
        //do something 
etc 
       } 

Веб-клиент не позволяет себе достаточно времени для загрузки всего источника веб-страницы. как заставить его ждать, пока он не закончит работу?C# Как сделать Sure Webclient разрешено необходимое время для загрузки

ответ

2

DownloadString - это блокирующий вызов, поэтому ничего не нужно делать. Он будет продолжать загружаться до тех пор, пока строка не будет получена.

Проблема, вероятно, заключается в том, что вы не должны использовать DownloadString. Что вы пытаетесь получить? Вы получаете половину ожидаемой строки?

Вы должны, вероятно, использовать его в качестве статьи MSDN показывает:

WebClient client = new WebClient(); 

// Add a user agent header in case the 
// requested URI contains a query. 

client.Headers.Add ("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)"); 

Stream data = client.OpenRead (some_string); 
StreamReader reader = new StreamReader (data); 
string s = reader.ReadToEnd(); 
Console.WriteLine (s); 
data.Close(); 
reader.Close(); 

Источник здесь: http://msdn.microsoft.com/en-us/library/system.net.webclient(VS.80).aspx

+0

Я просто пошел за источником веб-страницы –

+0

В этом случае код выше должен быть точным. MSDN не говорит точно, что будет загружено, если вы используете DownloadString. Я также хотел бы проверить, что ваша страница не загружает сообщение об ошибке или подобное. Он просит веб-сервер предоставить вам страницу (как и ваш браузер), поэтому возможно, если вы укажете неверный URL-адрес, в результате чего вы загрузите сообщение «Страница не может быть найдено». – NibblyPig

+0

спасибо за подсказку, могучий ручейщик снова приходит на помощь. –

1

Веб-клиент не разрешает программный доступ к таймауту. Вместо этого вам придется использовать объект HttpRequest.

+0

+1 для ответа на вопрос ОП думал, что он просил. –

Смежные вопросы