Je souhaite ouvrir certaines fenêtres non modélisées (WPF) mais au moment où cela doit se produire, je suis sur un thread non STA. Donc, je commence un nouveau fil et les ouvre là-bas. Mais dès qu'ils sont ouverts, ils se referment. (Soit dit en passant. Le comportement de ces fenêtres doit être indépendante de la fenêtre principale. Donc, pas de propriété propriétaire est définie)Comment empêcher la fermeture de fenêtres non modales sur un nouveau thread STA
private void SomeMethod_OnA_NON_STA_Thread()
{
// some other work here
Thread ANewThread = new Thread(OpenSomeWindows);
ANewThread.SetApartmentState(ApartmentState.STA);
ANewThread.Start();
}
private void OpenSomeWindows()
{
TestWindow T;
for (int i = 0; i < 3; i++)
{
T = new TestWindow();
T.Show();
}
}
Qu'est-ce que je fais mal ici?
Thx !!!!! Maintenant ça marche. Encore une fois je trouve que je dois lire plus sur cette chose de répartiteur. –
Mais lisez la dernière mise à jour ... – Vlad
Cette dernière itération: (Application.Current.Dispatcher.Invoke (OpenSomeWindows);) est (IMHO) la meilleure façon de traiter l'interface utilisateur à travers différents threads, surtout si vous essayez d'écrire quelque chose rapidement, et ne veulent pas avoir à apprendre ou réapprendre le filetage. Je sais que c'est mauvais, mais pour les prototypes et les petits projets, parfois vous voulez juste quelque chose qui fonctionne, ce que cela fait. –