Winforms 当窗体关闭时,如何终止Windows Mobile 6.1窗体应用程序进程?
在我编写的.Net CF 3.5 WinForms程序的Program.cs文件中,我通过实例化Form1的一个新实例来启动应用程序Winforms 当窗体关闭时,如何终止Windows Mobile 6.1窗体应用程序进程?,winforms,windows-mobile,compact-framework,windows-mobile-6.1,Winforms,Windows Mobile,Compact Framework,Windows Mobile 6.1,在我编写的.Net CF 3.5 WinForms程序的Program.cs文件中,我通过实例化Form1的一个新实例来启动应用程序 Application.Run(new Form1()); 当我想关闭/退出应用程序时,我会覆盖Form1 FormClosed事件,以确保退出应用程序 // In Form1 code-behind private void OnFormClosed(object sender, EventArgs e) { Application.Exit(); /
Application.Run(new Form1());
当我想关闭/退出应用程序时,我会覆盖Form1 FormClosed事件,以确保退出应用程序
// In Form1 code-behind
private void OnFormClosed(object sender, EventArgs e)
{
Application.Exit(); // Doesn't kill process
}
当这段代码运行时,我希望应用程序从屏幕上消失(关闭),并希望它运行的进程死掉。应用程序关闭(消失),但不幸的是,进程(我们称之为app.exe)仍在无限期运行。当我再次启动并关闭应用程序时,它会启动另一个app.exe进程,等等。因此,该进程永远不会消亡,并且会创建更多的内存
如何确保在关闭/退出应用程序时终止此进程?谢谢。首先,你不应该为了得到你想要的行为而越过表单关闭。仅关闭传递给Application.Run的表单将导致应用程序的消息泵退出,并应导致进程结束。对于Windows Mobile,您应该将表单的showmimize属性设置为
false
,以防止表单被最小化-您应该在右上角有一个(OK),而不是一个(X)
如果此窗体关闭时进程没有退出,那么99.99%的罪魁祸首是您有一个仍在运行的工作线程阻止进程关闭。确保所有线程都将
IsBackground
设置为true
(对于CF 3.5),并且作为预防措施,所有线程还应该具有某种形式的退出通知或标志。不要依赖进程终止来为您拆除它们。您的问题是您有Form.MinimizeBox=true
。将其更改为false
,在单击ok时关闭表单,而不是在单击x时最小化表单
在你的问题中有更多的事情要考虑:
我覆盖Form1 FormClosed事件
- 对于
类型的表单,没有System.Windows.forms.Form
事件,只有FormClosed
和关闭
关闭
- 您不能覆盖事件。您可以从基类或接口重写虚拟函数