IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

[C#][VS 2005] bug classe statique


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 134
    Par défaut [C#][VS 2005] bug classe statique
    Bonjour,

    J'ai un bug un peu étrange qui est survenu d'un seul coup après une compilation. Mais je n'ai rien changé au code. J'utilise une classe statique (Commun) dans laquelle j'ai des fonctions que j'utilise entre toutes mes différentes classes. Voici le message d'erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    L'exception System.TypeInitializationException n'a pas été gérée
      Message="Une exception a été levée par l'initialiseur de type pour 'Commun'."
      Source="Dlab 2008"
      TypeName="Commun"
      StackTrace:
           à Commun.StartService(String nom)
           à Dlab.Formulaires.MainMenu..ctor() dans D:\Dlab2005\Dlab\Dlab\Formulaires\MainMenu.cs:ligne 85
           à Dlab.Classes.Program.Main() dans D:\Dlab2005\Dlab\Dlab\Classes\Program.cs:ligne 17
           à System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args)
           à System.AppDomain.nExecuteAssembly(Assembly assembly, String[] args)
           à System.Runtime.Hosting.ManifestRunner.Run(Boolean checkAptModel)
           à System.Runtime.Hosting.ManifestRunner.ExecuteAsAssembly()
           à System.Runtime.Hosting.ApplicationActivator.CreateInstance(ActivationContext activationContext, String[] activationCustomData)
           à System.Runtime.Hosting.ApplicationActivator.CreateInstance(ActivationContext activationContext)
           à Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssemblyDebugInZone()
           à System.Threading.ThreadHelper.ThreadStart_Context(Object state)
           à System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
           à System.Threading.ThreadHelper.ThreadStart()
    Voici le contexte d'utilisation et là où ça plante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Commun.StartService("SQL Server (SQLEXPRESS)");
    Voici ensuite la méthode statique :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    /// <summary>
      /// Démarre un service.
      /// </summary>
      static public void StartService(string nom)
      {
        // on lance le service "nom" s'il n'est pas déjà lancé
        System.ServiceProcess.ServiceController srvController = new System.ServiceProcess.ServiceController(nom);
     
        if (srvController.Status == System.ServiceProcess.ServiceControllerStatus.Stopped)    
          srvController.Start();    
      }
    J'ai l'impression que c'est comme si le "type" d'objet "Commun" n'existait pas au moment de son utilisation...

    Merci

  2. #2
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Peut être que tout simplement ton service n'existe pas et dans ce cas, il lève une exception InvalidOperationException, laquelle entraine une TypeInitializationException, car ayant lieu dans une initialisation de type.

    Extrait ton code, mets le dans une autre classe et exécute le, pour voir.

  3. #3
    Membre émérite
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    547
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 547
    Par défaut
    Salut,

    un TypeLoadEx, c'est souvent quand les initialisation static (ou, ca revient au meme, le cctor static) leve une exception. Regarde si tu n'as pas une trace de l'exception sous-jacente dans le innerEx de ton TypeLoadEx.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 134
    Par défaut
    j'ai trouvé l'erreur, vraiment improbable mais stupide :

    Après une modification j'ai déclaré un évenement d'un textBox d'une classe (InputBox) dans son constructeur...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    this.textBox.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.textBox_KeyPress);
    C'est surprenant que le compilateur ne le détecte pas comme une erreur et qu'il soit totalement pertubé après jusqu'à ne plus connaitre un type (Commun).

    Merci en tout cas, car j'ai failli criser.

  5. #5
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par backfire Voir le message
    C'est surprenant que le compilateur ne le détecte pas comme une erreur
    Dans la mesure où c'est syntaxiquement correct, pourquoi le détecterait-il comme une erreur ?

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 134
    Par défaut
    c'est sûr, mais lorsque que l'erreur est levée, on ne peut pas savoir d'où vient l'erreur ! on se croirait à développer en c++ ou php...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VS 2005] [VB] Class de base et function Overrides
    Par Mouse dans le forum Visual Studio
    Réponses: 2
    Dernier message: 27/10/2006, 09h57
  2. Classe statique en C++ ?
    Par oodini dans le forum C++
    Réponses: 9
    Dernier message: 18/10/2006, 13h31
  3. Réponses: 2
    Dernier message: 05/09/2006, 10h08
  4. classe statique objet
    Par drKzs dans le forum Langage
    Réponses: 8
    Dernier message: 04/09/2006, 11h58
  5. Classe statique
    Par jeje99 dans le forum Langage
    Réponses: 12
    Dernier message: 04/01/2006, 16h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo