2014-02-21 10 views
5

Ich habe eine Liste von URL und ich muss sie navigieren. Wie kann ich sicherstellen, dass jede URL das DocumentCompleted-Ereignis aufruft? Ich habe bereits versucht, viele Threads zu erstellen, und habe versucht, auch einen einzelnen Thread zu verwenden, aber die App löst immer noch nicht das Ereignis DocumentCompleted für jede URL aus.Wie navigiere ich mit Webbrowser in einer Liste von Links?

Gibt es eine Möglichkeit, eine Schleife in einer Liste von URLs zu erstellen und sie ein DocumentCompleted aufzurufen, bis der Thread die nächste URL aufruft?

+0

warum willst du das? –

+0

Jede URL hat einen anderen Text und ich muss diese Texte speichern. Einfach so. – galioni

Antwort

3

Um dies zu implementieren, können async/await und Task Parallel Library nützlich sein. Sie ermöglichen einen vertrauten, pseudo-linearen Codefluss für eine asynchrone Logik (die nacheinander die Ereignisse DocumentCompleted für mehrere Navigationen behandelt).

antwortete ich eine ähnliche Frage für eine WinForm app here und für eine Konsole App here.

Wenn Sie .NET 4.0 zielen müssen, aber mit VS2012 + entwickeln, können Sie weiterhin async/await verwenden, dafür stellt Microsoft die Bibliothek Microsoft.Bcl.Async zur Verfügung.

Wenn C# 5.0 für dieses Projekt nicht verfügbar ist, können Sie yield als described here verwenden.

+0

Ich werde einen Blick darauf werfen. Vielen Dank ! – galioni

+0

Entschuldigung, ich habe vergessen zu sagen, dass ich .net 4.0 verwende, also kann ich async/await nicht verwenden. Aber danke für deine Hilfe. – galioni

+0

@galioni, können Sie 'Ausbeute' dann genau so verwenden: http://Stackoverflow.com/a/22296644/1768303. Wenn Sie .NET 4.0 verwenden, aber mit VS2012 + entwickeln möchten, können Sie 'async/await' weiterhin verwenden, Microsoft stellt das [' Microsoft.Bcl.Async'] bereit (http://www.nuget.org/packages/ Microsoft.bcl.async) Bibliothek dafür. – Noseratio

2

Wenn auf einer Seite Skripte Fehler enthalten, ist es möglich, dass sie niemals abgeschlossen werden. Sie sollten eine Zeitüberschreitung für dieses Ereignis vornehmen.

+0

Danke für den Tipp! – galioni