非モデルウィンドウ(WPF)を開いていますが、これが発生する必要がある時点で私はSTAスレッドではありません。だから私は新しいスレッドを開始し、そこにそれらを開きます。しかし開かれるとすぐに、彼らは再び閉じます。 (ちなみに。これらのウィンドウの挙動は、メインウィンドウから独立していなければならない。だから、何の所有者プロパティが設定されていない)私はここで間違って何をやっている新しい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();
}
}
?
Thx !!!!!今それは動作します。もう一度私はこのディスパッチャーのことをもっと読まなければならないことがわかります。 –
最後の更新を読む... – Vlad
この最後の反復:(Application.Current.Dispatcher.Invoke(OpenSomeWindows);)は、(IMHO)は、特にスレッドを書くときに、さまざまなスレッド間でUIを処理する最善の方法ですすばやく何かを学び、再学習する必要はありません。私はそれが悪いことを知っていますが、プロトタイプや小規模なプロジェクトでは、時にはうまくいくものがほしいのです。 –