2014-02-21 2 views
5

У меня есть список URL-адресов, и мне нужно их перемещать. Как я могу убедиться, что каждый URL-адрес вызовет событие DocumentCompleted? Я уже пытался создать много потоков и попытался использовать один поток, но приложение все еще не запускает событие DocumentCompleted для каждого URL-адреса.Как перемещаться по списку ссылок с помощью webbrowser?

Есть ли способ сделать цикл в списке URL-адресов и заставить их вызвать DocumentCompleted, пока поток не вызовет следующий URL-адрес?

+0

почему вы этого хотите? –

+0

Каждый url имеет другой текст, и мне нужно сохранить эти тексты. Просто так. – galioni

ответ

3

Для реализации этого могут понадобиться async/await и Task Parallel Library. Они позволяют иметь знакомый, псевдолинейный поток кода для асинхронной логики (обработка событий DocumentCompleted для нескольких навигаций один за другим).

Я ответил на аналогичный вопрос для WinForm приложение в here и консольного приложения here а.

Если вам нужно настроить .NET 4.0, но разработать с VS2012 +, вы все равно можете использовать async/await, Microsoft предоставляет библиотеку Microsoft.Bcl.Async для этого.

Если C# 5.0 недоступен для этого проекта, вы можете использовать yield, так как described here.

+0

Я посмотрю. Благодаря ! – galioni

+0

Извините, я забыл сказать, что я использую .net 4.0, поэтому я не могу использовать async/wait. Но спасибо за вашу помощь. – galioni

+0

@galioni, вы можете использовать 'yield' тогда, точно так же: http://stackoverflow.com/a/22296644/1768303. Или, если вам нужно настроить .NET 4.0, но работать с VS2012 +, вы все равно можете использовать 'async/await', Microsoft предоставляет [' Microsoft.Bcl.Async'] (http://www.nuget.org/packages/ microsoft.bcl.async) для этого. – Noseratio

2

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

+0

Спасибо за подсказку! – galioni

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