6 votes

Comment corriger l'erreur : "Le fil de discussion en cours doit avoir son état d'appartement défini sur ApartmentState.sta pour pouvoir lancer Internet Explorer" ?

J'ai le code suivant en C# :

namespace Tests
{    
    [SetUpFixture, RequiresSTA]
    public class Setup
    {
        public IE Window = new IE("webpage");

        [SetUp]
        public void SetUp()
        {

        }

        [TearDown]
        public void TearDown()
        {

        } 
    }
}

Lorsque j'essaie de l'exécuter avec mon site web, il renvoie l'erreur suivante :

"L'état de l'appartement du fil de discussion actuel doit être défini comme suit ApartmentState.sta pour pouvoir lancer Internet Explorer"

Normalement, lorsque l'on utilise autre chose que SetupFixture, RequiresSTA est la solution. Mais pour une raison quelconque, cela ne fonctionne pas maintenant.

10voto

Emerica. Points 558

La solution est finalement assez simple, si l'on inclut la ligne :

[assembly: RequiresSTA] 

en haut de votre page, l'ensemble de l'assemblage sera configuré pour utiliser STA et il n'y aura plus d'erreur.

5voto

Mario Points 5518

Vous pouvez essayer de démarrer une nouvelle discussion et de définir son ApartmentState :

var t = new Thread(new ThreadStart(ToDo));
t.SetApartmentState(ApartmentState.STA);
t.Start();
// Run synchronously by waiting for t to finish.
t.Join(); 

Et le délégué :

private void ToDo()
{
    // Do something...
}

Ou version en ligne :

var t = new Thread(() => 
{
    // Do something...
});

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X