Puis-je attendre pour un webbrowser pour terminer la navigation, à l'aide d'une boucle for?
J'ai une boucle for:
for (i = 0; i <= 21; i++)
{
webB.Navigate(URL);
}
webB
est un contrôle webBrowser et i
est un int.
Je veux attendre le navigateur pour terminer la navigation.
J'ai trouvé cette, cependant:
- Je ne veux pas utiliser les Api ou les compléments
- Je ne peux pas utiliser un autre
void
fonction, comme il est suggéré dans cette réponse
Est-il un moyen de patienter pendant que dans une boucle for?
ce qui est mauvais dans cette réponse? stackoverflow.com/a/956020/1714342
les commentaires que c'est très gourmande en ressources de votre PROCESSEUR alors il va.
chaque solution sans événement terminé(le meilleur) serait de temps CPU, peut-être essayer d'utiliser
Oh, ça irait? Ok, merci pour la suggestion.
oui, vous serez coincé dans la boucle for et vous serez à faire quelques trucs (une substance), il a pour incidence sur CPU.
les commentaires que c'est très gourmande en ressources de votre PROCESSEUR alors il va.
chaque solution sans événement terminé(le meilleur) serait de temps CPU, peut-être essayer d'utiliser
Thread.Sleep
?Oh, ça irait? Ok, merci pour la suggestion.
oui, vous serez coincé dans la boucle for et vous serez à faire quelques trucs (une substance), il a pour incidence sur CPU.
OriginalL'auteur Minicl55 | 2013-08-18
Vous devez vous connecter pour publier un commentaire.
En supposant que vous êtes l'hôte d'
WebBrowser
dans un WinFroms application, vous pouvez le faire dans une boucle facilement et efficacement, à l'aideasync/await
modèle. Essayez ceci:Maintenant, il est important de comprendre que
DoNavigationAsync
s'exécute de façon asynchrone. Voici comment vous pouvez appeler à partir d'Form_Load
et gérer la fin de celui-ci:J'ai répondu à une question similaire ici.
oui, il peut me faire virer plusieurs fois, par exemple pour un document avec
iframes
. Je me souviens que j'ai couvert dans plus de détails ailleurs, si vous êtes intéressé de recherche pour mes autres réponses avecwebbrowser-control
tag.J'ai essayé de mettre en œuvre le silence de l'impression à mon application winforms. J'ai pris votre réponse (stackoverflow.com/questions/19734151/...) comme base. Pourtant, j'ai toujours eu de navigateur web dans initialisée readystate. Ce qui pourrait être la cause?
entendez-vous l'exemple de code de cette réponse ne fonctionne pas pour vous, que c'est?
Noseratio, pour quelque raison, oui, il ne fonctionne pas comme il est. Je suis en train d'imprimer un document pdf, il existe peut-être quelque chose à faire avec les paramètres de sécurité internet explorer idk. WebBrowser reste dans le non initialisée état prêt.
OriginalL'auteur noseratio
Vous n'avez pas à utiliser un autre
void
fonction. Il suffit d'utiliser unlambda
comme suit:OriginalL'auteur Jashaszun
Utiliser cette boucle à l'intérieur de la boucle for.
Ce attend jusqu'à ce que le Navigateur charge la page complètement.
OriginalL'auteur Gokul
À attendre dans un fil, vous pouvez faire quelque chose comme ceci
Malheureusement, il n'est pas lié avec la navigation en temps fini.
OriginalL'auteur ismellike
La bonne façon est d'utiliser des événements.
Dans votre boucle, comment pouvez-vous savoir que la navigation? peut-être que vous êtes hors de la boucle, mais c'est seulement la moitié du chemin...
Aussi, en boucle lors de l'attente est appelé Occupé attente et est CPU cher.
Afin d'être averti lorsque la page est prête, et dans le même temps garder CPU disponible pour d'autres trucs, utiliser les événements comme @Jashaszun suggéré:
OriginalL'auteur Avi Turner
Essayez d'utiliser des tâches comme ceci:
Espère que j'ai aidé.
OriginalL'auteur FlameBlazer
OriginalL'auteur Bourch Mustapha