2010-11-15 10 views

Répondre

24

Normalement, le procédé de point d'entrée pour les fils de WPF ont le [STAThreadAttribute] ensemble pour la ThreadMethod, ou avoir l'état d'appartement réglé sur STA lors de la création du fil en utilisant Thread.SetApartmentState(). Toutefois, cela ne peut être défini avant que le thread est démarré.

Si vous ne pouvez pas appliquer cet attribut au point d'entrée de l'application du fil que vous effectuez cette tâche, procédez comme suit:

void Installer1_AfterInstall(object sender, InstallEventArgs e) 
{ 
    var thread = new Thread(new ThreadStart(DisplayFormThread)); 

    thread.SetApartmentState(ApartmentState.STA); 
    thread.Start(); 
    thread.Join(); 
} 

private void DisplayFormThread() 
{ 
    try 
    { 
     MainWindow ObjMain = new MainWindow(); 
     ObjMain.Show(); 
     ObjMain.Closed += (s, e) => System.Windows.Threading.Dispatcher.ExitAllFrames(); 

     System.Windows.Threading.Dispatcher.Run(); 
    } 
    catch (Exception ex) 
    { 
     Log.Write(ex); 
    } 
} 
+1

[STAThreadAttribute] DisplayFormThread private void() { essayer { MainWindow ObjMain = new MainWindow(); ObjMain.Show(); } catch (Exception ex) { Log.Write (ex); } } – anbuselvan

+0

Désolé, je ne comprends pas votre commentaire. 'STAThreadAttribute' peut être raccourci en' STAThread'; c'est supporté. C'est ce que tu veux dire? –

+0

Cela ne fonctionne pas, [STAThread] n'est reconnu que sur le point d'entrée du programme (Main). Utilisez Thread.SetApartmentState() à la place. Vous devrez également exécuter une boucle de message, Application.Run(). –

4

J'ai eu cette erreur avant et la façon la plus simple est d'utiliser Dispatcher.
Voir mon Question et answer

Bonne chance

+0

S'il vous plaît dites-moi pourquoi cette réponse est mauvaise, c'était mon instinct naturel pour une solution –

+0

vous devez demander à qui a abattu vote! – Rev

+0

oui mais je ne peux pas, c'est pourquoi j'ai laissé ce poste ouvert invitant toute personne qui sait ce qui ne va pas avec cette solution pour répondre –

Questions connexes