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

Visual Studio Discussion :

[Visual C# 2005 express] fonction Main comme STAThreadAttribute


Sujet :

Visual Studio

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 80
    Points : 66
    Points
    66
    Par défaut [Visual C# 2005 express] fonction Main comme STAThreadAttribute
    Bonjour à tous.

    J'utilse Visual C# 2005 express.
    Et quand je teste mon programme j'obtiens le message suivant:

    "Le thread actuel doit être en mode STA (Single Thread Apartment) avant que des appels OLE puissent être effectués. Assurez-vous que votre fonction Main est marquée comme STAThreadAttribute".

    Comment marquer la fonction Main comme STAThreadAttribute ?

    D'avance merci.

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Août 2005
    Messages : 32
    Points : 46
    Points
    46
    Par défaut
    Voilà l'attribut devant figurer avant la méthode Main :

    [STAThread]
    static void Main()
    {}

    Il semble toutefois que cet attribut soit automatiquement ajouté par visual C# lors de la création de tout nouveau projet "Form"

    A+

  3. #3
    Expert confirmé
    Avatar de debug
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    1 034
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 034
    Points : 4 093
    Points
    4 093
    Par défaut
    Je ne suis pas certaine, mais vérifie sur ton fichier program.cs, qu'avant ton Main, tu as bien :


    Moi j'ai des choses de ce genre :

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    [STAThread]
            static void Main()
            {
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                Application.Run(new Form1());
            }
    May the Troll, be with you
    (Que le troll soit avec toi)

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 80
    Points : 66
    Points
    66
    Par défaut
    Merci beaucoup. Cela fonctionne...

  5. #5
    Membre confirmé Avatar de themadmax
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    446
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 446
    Points : 496
    Points
    496
    Par défaut
    Bonjour,

    Mon application C#, fonctionne correctement en Debug.
    Mais en release elle plante lorsque je fait fichier ouvrir a l'appel de OpenFileDialog. J'ai le message d'erreur :
    Une exception non gérée du type 'System.Threading.ThreadStateException' s'est produite dans System.Windows.Forms.dll

    Informations supplémentaires : Current thread must be set to single thread apartment (STA) mode before OLE calls can be made. Ensure that your Main function has STAThreadAttribute marked on it. This exception is only raised if a debugger is attached to the process.
    J'utilise bien [STAThread]. Pour info je fait des appels a des DLL/C++/COM. Si vous avez des petites idée. merci.
    ________________________________________________
    http://bliquid.fr : Blog sur Android et l'Acer Liquid

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    39
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 39
    Points : 26
    Points
    26
    Par défaut
    Bonjour,

    J'ai la même erreur que OpenGG :
    "Le thread actuel doit être en mode STA (Single Thread Apartment) avant que des appels OLE puissent être effectués. Assurez-vous que votre fonction Main est marquée comme STAThreadAttribute".

    Voici le contenu de program.cs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
            [STAThread]
            static void Main()
            {
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                Application.Run(new Authentification());          
            }
    Dans une partie de mon application (de messagerie instantannée) je crée un nouveau Thread et j'ouvre une Form Message dedans de cette façon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
            //Thread pour l'ouverture de la fenetre message
            Thread monthread;
            MyThread mythread;
     
            //ouverture de la fenêtre message dans un nouveau thread
            message = new Message(this);
            mythread = new MyThread(message);
            monthread = new Thread(new ThreadStart(mythread.run));
            monthread.Start();
    Et dans cette fenêtre Message j'ai un bouton pour envoyé un fichier qui est censé ouvrir un openfiledialog
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
                if (openFileDialog1.ShowDialog(this) == DialogResult.OK)
                {
                    // Fichier sélectionné
                    chemin = openFileDialog1.FileName.ToString();
                }
    Et c'est à ce moment là que j'ai l'erreur.
    Alors c'est vrai que j'ai bien le
    avant le Main mais le main n'ouvre pas directement ma form message donc peut être qu'il faut le lui dire autrement...

    J'espère avoir été clair en tout cas n'hésitez pas pour de plus ample informations.

    Merçi

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

Discussions similaires

  1. [IDE] Visual Studio 2005 Express
    Par Louis-Guillaume Morand dans le forum Général Dotnet
    Réponses: 130
    Dernier message: 23/12/2006, 15h08
  2. Visual Studio 2005 express & XMLRAD
    Par mchicoix dans le forum XMLRAD
    Réponses: 3
    Dernier message: 03/12/2005, 19h12
  3. [C#][Visual C# 2005 Express] GetKeyState ne fonctionne plus
    Par vincent.e dans le forum EDI/Outils
    Réponses: 3
    Dernier message: 20/11/2005, 10h29
  4. [Visual C# 2005 Express]Dessin au premier plan
    Par oiffrig dans le forum Windows Forms
    Réponses: 5
    Dernier message: 12/11/2005, 18h35

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