【发布时间】:2013-09-24 15:54:49
【问题描述】:
我的程序有事件onClosing - 只是隐藏它。但我还需要实现程序的关闭 - 尝试使用任务栏通知项的上下文菜单。
代码:
private void FormMainForm_FormClosing(object sender, FormClosingEventArgs e)
{
//canceling closing form
e.Cancel = true;
//hide form
this.WindowState = FormWindowState.Minimized;
}
private void toolStripMenuItem1_Click(object sender, EventArgs e)
{
//hide icon from tray
notifyIcon.Visible = false;
//get current process
Process proc = Process.GetCurrentProcess();
//kill it and close programm
proc.Kill();
}
但也读了一点,kill() 终止所有工作并“杀死”进程,认为关闭程序可能不是正常方式 - 某些数据可能被破坏或不存储
也尝试使用proc.closeMainWindow(); 和proc.Close() - 但对程序没有影响 - 所有窗口都关闭,但进程仍在运行。
问题:.kill()是关闭程序的正确方法,还是有其他方法?
【问题讨论】:
-
从任务管理器中杀掉也是一样的。方法对吗?
-
你在使用前台线程吗?如果不使用
Application.Exit() -
另一种选择:
Environment.Exit(0);. -
Application.Exit()- 尝试一下 - 只关闭所有可见窗口,但进程仍在运行 -
您的程序是否创建任何后台线程?如果是这样,您需要通知他们您正在关闭,以便他们可以正常退出。