2008-10-20 6 views
1

J'ai écrit une application dans VB.NET en utilisant MS Visual Studio 2005. J'utilise la version .NET '2.0.50727'. L'application fonctionnait sans erreurs jusqu'à récemment. Après avoir été utilisé pendant un certain temps, il commence à produire un System.Runtime.InteropServices.COMException error (80080005). L'erreur se produit lorsque je fais un appel pour produire une instance d'une autre application externe. Une fois que cette erreur s'est produite, elle ne disparaît jamais, se produisant chaque fois que mon application est ouverte. Cette erreur casse la fonctionnalité de mon programme car elle dépend de la 2ème application qu'elle appelle.Erreur COMException VB.NET

Je ne suis pas sûr de ce qui déclenche cette erreur, mais je sais que c'est spécifique à l'utilisateur et non l'application. Il semble être quelque chose qui se produit dans le profil Windows de l'utilisateur. Je peux utiliser un utilisateur différent sur la même machine ou créer un nouveau profil pour l'utilisateur avec le problème et le programme fonctionnera sans erreur pendant un moment. Finalement (dans quelques semaines) l'erreur reviendra et restera jusqu'à ce que je le résolve à nouveau. J'essaye de déboguer l'erreur de COM pour comprendre pourquoi ceci se produit mais c'est un comportement si étrange que je ne suis pas sûr par où commencer. Je n'ai jamais vu une erreur qui se connecterait à un profil et le rendrait persistant.

Je n'ai pas beaucoup d'expérience .NET mais j'ai fait beaucoup de programmation d'applications VB 6. S'il vous plaît offrir des suggestions que vous avez. Votre aide est grandement appréciée.

Voici le bloc de code où l'erreur se produit:

Public Class frmMain 

Public btApp As BarTender.Application 

Private Sub frmMain_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 

Try 

    btApp = New BarTender.Application 

Catch COMex As Runtime.InteropServices.COMException 

    MessageBox.Show("Error " + COMex.ErrorCode.ToString() + ": " + COMex.Message) 

End Try 

Je déclare la variable au sommet de ma forme de frmMain.vb (la première forme de chargement). Je charge l'objet COM lorsque le premier formulaire est chargé. Je le laisse actif jusqu'à la fermeture de l'application car je lui fais beaucoup d'appels.

+0

Pouvez-vous donner votre code et fournir plus d'informations sur le COMException? Il devrait y avoir au moins un message texte dans l'exception. Il y a beaucoup de raisons pour COMExecptions. – Jan

Répondre

1

Il semble que l'erreur soit liée à la sécurité. Si cela arrive par magie sur un nouvel utilisateur après un certain temps, je regarderais vos définitions de politique d'utilisateur. Est-ce que les mots de passe expirent après une certaine période de temps? Les nouveaux utilisateurs ont-ils de petits répertoires temporaires qui se remplissent en fonction de l'utilisation de votre application (provoquant ainsi des erreurs de disque masquées comme des exceptions COM)? Quelle est cette application tierce? Nous sommes un peu à court de détails ici. Mais ce sont quelques choses à commencer à regarder.

+0

L'application que j'appelle est le logiciel Bartender de Seagull Scientific. C'est une application d'impression d'étiquettes. Nous l'utilisons pour les étiquettes d'expédition. Je ne crois pas que ce soit une question de sécurité. Votre idée de répertoire temporaire mérite d'être poursuivie. Je soupçonne que c'est un processus dans Bartender qui cause cela. – user29635

+0

J'ai oublié d'ajouter que même la promotion de l'utilisateur à l'administrateur local n'a aucun effet sur ce problème. – user29635

Questions connexes