關於 WPF 在主窗口中用多線程打開的子窗口關閉后進程還存在,這個問的題的解決方法。
this.Dispatcher.Thread.Abort()
下面是例子代碼主窗口:
void method()
{
Thread newWindowThread = new Thread(new ParameterizedThreadStart(showNewWindow));
newWindowThread.SetApartmentState(ApartmentState.STA);
newWindowThread.Start(msgClass);
}
void showNewWindow(object msgClass)
{
MsgClass mc = msgClass as MsgClass;
WTalk wt = new WTalk(mc, server); //New 子窗口
wt.Show();
System.Windows.Threading.Dispatcher.Run(); //這個必須有不然窗口一閃而過
}
子窗口代碼:
private void btnCloss_Click(object sender, RoutedEventArgs e)
{
// this.Close(); //用這個在所有窗口關閉后,在Windows任務管理器中還會看到程序的進程。
this.Dispatcher.Thread.Abort(); //這句能關閉多線程中開啟的自身線程關閉后不會停留在主進程。
}