Je cherchais une solution à ce problème depuis des jours sans succès, j'ai donc décidé de poster ici et j'espère que quelqu'un pourra m'aider. Ce qui le rend encore plus difficile, c'est que je ne peux pas reproduire ce problème sur mon ordinateur très régulièrement. Parfois, je vais avoir l'erreur mais la plupart du temps je ne le ferai pas.vb.net - Problème de refaire l'objet COM après la fermeture du programme
Fondamentalement ce qui se passe est que je crée un objet IE que mon programme contrôle ensuite pendant une longue période de temps. Qu'est-ce qui se passe est, si un utilisateur quitte le programme, il appelle oIE.Quit() puis ferme le programme. Cela devrait fermer Internet Explorer et tous les processus qui y sont associés.
Mais, le processus iexplorer ne finit pas par se fermer. Ensuite, lorsque l'utilisateur essaie de réexécuter le programme, nous obtenons cette erreur "System.Runtime.InteropServices.COMException (0x80004005): la création d'une instance du composant COM avec CLSID {0002DF01-0000-0000-C000-000000000046} à partir de l'IClassFactory a échoué en raison de l'erreur suivante: 80004005. ". Pour résoudre ce problème, nous fermons simplement les processus any iexplorer.exe qui sont ouverts et cela nous permettra de créer à nouveau notre objet ie. Cela arrive aussi si le programme plante et qu'ils tentent de le redémarrer.
Je ne suis pas sûr de ce qui cause cela ou s'il me manque quelque chose qui a à voir avec les objets com. Mais je suis simplement coincé.
Voici un code bien brancher ce code ne sera probablement pas reproduire les erreurs:
'create ie object
oIE = New SHDocVw.InternetExplorer
oIE.Navigate("http://www.google.com")
oIE.Visible = False
oIE.Silent = True
'kill ie object
oIE.Quit()
Merci pour le conseil. La plupart du temps, l'application ne plante pas, donc nous n'aurons pas de processus fantômes mais quand cela arrivera, nous n'aurons généralement que 1. Il y a aussi une fonction au début du code qui trouve les objets cachés et essaye de lancez oIE.Quit() sur eux. Cela échoue à nouveau. J'ai regardé en commutant le webbrowser et ferai probablement le commutateur. Le seul problème est qu'il est plus difficile d'exécuter javascript et je crains que mes utilisateurs auront plus d'erreurs si je change. – Phil
Javascript fonctionne aussi bien dans un WebBrowser. –
Je vais examiner cela. – Phil