在名为“Dev”的表单中,我有以下OnFormClosing函数,以确保当用户关闭表单时线程能够正确关闭。
主表单实际上被称为“programname.UI.Main”(是的,我知道..),并在“Program.cs”中打开(因此程序的入口点):
protected override void OnFormClosing(FormClosingEventArgs e)
{
base.OnFormClosing(e);
dev.stopMultipleColorsWatcher();
}
如果我直接关闭“Dev”窗体,一切正常。但是如果“Dev”窗体关闭是因为主窗体(“Form1”)被关闭(导致程序退出),则“Dev”中的OnFormClosing()
函数不会被调用,线程将继续运行,程序进程需要通过任务管理器杀死。
我该如何解决这个问题?我意识到我可以在“Form1”中添加一个OnFormClosing()
函数,然后调用“Dev”中的OnFormClosing()
函数,但我希望得到更简洁的解决方法。
更新:
从主窗体打开Dev窗体:
private void btn_opendev_Click(object sender, EventArgs e)
{
Dev frm = new Dev();
frm.Show();
}
主表单实际上被称为“programname.UI.Main”(是的,我知道..),并在“Program.cs”中打开(因此程序的入口点):
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new programname.UI.Main());
}