2009-12-15 7 views
1

Longue histoire courte: J'essaye d'écrire une application qui jettera l'histoire d'IE dans un fichier texte. Parce que je suis paresseux, je suis allé à la recherche d'une bibliothèque préexistante et j'ai trouvé ce beau projet à partir de: http://www.freevbcode.com/ShowCode.asp?ID=6702. Seulement, je suis coincé ...Pourquoi ce programme nécessite-t-il MsgBox?

J'ai finalement obtenu le programme pour vider l'histoire, mais il ne fonctionne que si je mets un MsgBox() sur la ligne 169 de Module1.vb. J'ai essayé d'y mettre un Thread.Sleep(), mais cela ne fonctionne pas. Il doit y avoir une boîte de message là, ou seulement l'histoire d'aujourd'hui est listée.

Ma conjecture, puisque ceci parle à wininet.dll, est ceci est une chose de concurrence. Thread.Sleep() (pour une boucle For ... Next) arrête le programme d'écoute; rien n'y fait sortir la boucle avant que les valeurs ne soient assignées, mais un MsgBox() est juste. Y a-t-il autre chose que MsgBox() qui aura le même effet? Je ne voudrais pas avoir à appuyer sur OK trente fois pour que le programme fonctionne.

Voici ma branche/version/travail dérivé: ; c'est un projet VS.NET2003. MsgBox() pompe une boucle de message.

Répondre

5

Cela peut décoller tout type de code. Les fenêtres ont une chance de se peindre. Les interblocages COM dus au fait que le thread principal reste coincé dans une boucle sont résolus, toujours un problème quand IE est impliqué. Appeler DoEvents() est l'alternative très imparfaite à MsgBox().

+0

Huh! Cela semblait fonctionner. DoEvents() a été évincé d'un jour de plus. Je pense, pour ce code, je suis coincé avec MsgBox. Je vous remercie. – AndrewBurton

Questions connexes