2013-02-12 4 views
0

Я соскабливаю веб-сайт с помощью WPF, и я пытаюсь поместить запросы в строку URL foreach в моем списке.Как управлять событием Webclient.Completed в цикле foreach?

Теперь похоже, что CompletedEvent не запускается. Он просто возвращается к циклу для следующей строки в моем списке. Как я могу позволить ему вернуться в цикл ПОСЛЕ того, как он достиг события Completed?

private void getAdress(double latitude, double longitude) 
{ 
    foreach (string classe in stringList) 
    { 
     WebClient searchClient= new WebClient(); 
     searchClient.DownloadStringCompleted += new DownloadStringCompletedEventHandler(searchClient_DownloadStringCompleted); 
     searchClient.DownloadStringAsync(new Uri("http://www.theURL.com")); 
    } 
} 

С наилучшими пожеланиями, Niels

ответ

1

вы скачиваете асинхронно. Весь смысл асинхронности заключается в том, что вы указываете запрос на запуск, а также то, что вы хотите, когда оно завершается ... и затем продолжайте движение.

Если вы хотите ждать, пока первый запрос не закончен перед началом второй, вы должны использовать синхронные вызовы - но не делают этого в потоке пользовательского интерфейса ...

+0

Я понимаю, но когда я изменяю это для «DownloadString (новый Uri ...» точка останова или MessageBox все еще не запускается в событии Completed ... Что я делаю неправильно? – Niels

+0

@Niels: Я не знаю, запускаются ли события, когда вы используете синхронные вызовы - вы ожидаете использовать результат вызова метода в этом случае. –

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