winforms - 如何在表单关闭时终止 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(); // Doesn't kill process
}

当此代码运行时,我希望应用程序从屏幕上消失(关闭),并且我希望它正在运行的进程消失。该应用程序关闭(消失),但不幸的是,该进程(我们将其称为 app.exe)仍在无限期运行。当我再次启动应用程序并关闭它时,它会启动另一个 app.exe 进程,等等。因此该进程永远不会消失,并且会创建更多进程来消耗内存。

当我关闭/退出应用程序时,如何确保该进程被终止?谢谢。

最佳答案

首先,您不必重写 OnFormClosed 即可获得您想要的行为。只需关闭传递给 Application.Run 的表单就会导致应用程序的消息泵退出,并且应该导致进程结束。对于 Windows Mobile,您应该将表单的 ShowMinimize 属性设置为 false 以防止其最小化 - 右上角应该有一个 (OK),而不是 (X)。

如果此表单关闭时进程未退出,则 99.99% 的情况是罪魁祸首是您有一个仍在运行的工作线程,导致进程无法关闭。确保所有线程的 IsBackground 设置为 true(对于 CF 3.5),并且作为预防措施,所有线程还应该具有某种形式的退出通知或标志。不要依赖进程终止来为您拆除它们。

关于winforms - 如何在表单关闭时终止 Windows Mobile 6.1 表单应用程序进程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3770222/

相关文章:

windows-mobile - Windows Mobile 6.X 中的图像识别

c# - 在哪里部署配置文件和exe文件?

c# - 将数据 GridView 背景设置为透明

c# - 如何以不同的形式将文本框数据传递到datagridview

visual-studio - 程序适配Windows CE 6.0

c# - visual-studio 2013 是否支持 Windows-mobile 或 Windows-CE 编程?

c# - 有没有混淆C#源代码的程序?

.net - 如何在 .Net 中使用 PKCS #1 v1.5 编码数据

c# - 按下 PrintScreen 时 Form_Keydown 事件不起作用

javascript - 在 Windows 窗体中单击 CefSharp 浏览器中的按钮