我的Windows应用程序有2个表单。从一种形式我打开第二种形式。 打开第二个表单时,我隐藏了1个表单,而在第二个表单中,我正在启动一个帖子。 现在我要关闭应用程序。 但我无法做到这一点。
在我的第一张表格上,我尝试过:
Form1 frm = new Form1(this, tcpClient);
frm.ShowDialog();
this.Close();
Application.Exit();
但申请没有结束。它还在运行。
知道如何阻止它?
编辑(包括代码):
在第一张表格的按钮点击事件:
this.Hide();
Form1 frm = new Form1(this, tcpClient, serverMsg);
frm.Show();
在第一个表单的按钮FormClosed事件:
MessageBox.Show("Before");
Application.Exit();
在第二个表单的加载事件中,我调用方法startThread();关于这个方法
ilThread = new Thread(incomingListener);
ilThread.IsBackground = true;
ilThread.Start();
答案 0 :(得分:3)
当你执行frm.ShowDialog()
时,你正在打开一个模态窗口。代码将在此时停止,直到您在frm上指定DialogResult
。即frm.DialogResult = DialogResult.Ok;
。
如果您使用可能适合您的frm.Show()
。
答案 1 :(得分:1)
编辑 - 请先查看@ GenericTypeTea的答案。如果这样做之后你还有问题,请看我的:
从你描述的内容来看,听起来你已经让线程运行了。您是否尝试将该线程创建为background thread或确保以干净的方式结束该线程?
答案 2 :(得分:0)
您可能没有将您启动的线程设置为后台线程。应用程序关闭时,后台线程会自动停止。前景线程将使它保持活力。
要将线程设置为后台线程,请使用IsBackground
属性。
否则,您应该在退出应用程序之前自行停止已启动的线程。