关于 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(); //这句能关闭多线程中开启的自身线程关闭后不会停留在主进程。
} |