2010-11-02 15 views
0

Je viens d'ajouter un ElementHost à un formulaire Windows (il y a un autre code C# dans le formulaire). Ensuite, il m'a donné l'erreur "Le thread appelant doit être STA, car de nombreux composants de l'interface utilisateur nécessitent cela." J'ai changé le thread en STA, mais ça bloquait d'autres choses ... est-ce qu'il y a de toute façon pour faire fonctionner l'elementhost sans toucher à aucun autre code?ElementHost me donne "Le thread appelant doit être STA, car de nombreux composants de l'interface utilisateur l'exigent."

ici est le code comment je change fil:

public UCClientSummary() 
    { 
     InitializeComponent(); 

     Thread thread = new Thread(createElementHost); 
     thread.SetApartmentState(ApartmentState.STA); 
     thread.Start(); 
     thread.Join(); 


    } 

    public void createElementHost() 
    { 
     ElementHost elementHost = new ElementHost(); 
     elementHost.Dock = DockStyle.Fill; 
     LDControls.ucCell uc = new LDControls.ucCell(); 
     elementHost.Child = uc; 
     this.Controls.Add(elementHost); 
    } 

Répondre

0

Ajouter le attrribute devant votre principal [STAThread]. Je ne suis pas sûr si passer l'état d'appartement de fil entre les travaux.

Il se peut que les travailleurs d'arrière-plan aient déjà été créés dans le mauvais état de l'appartement.

HTH

Mario

+0

merci Mario. Je vais essayer ça. – Sen