阻止应用程序关闭

Posted

技术标签:

【中文标题】阻止应用程序关闭【英文标题】:Prevent application from closing 【发布时间】:2014-09-30 18:14:58 【问题描述】:

我在 Visual Studio 中创建了一个空项目并添加了所需的程序集引用、一个具有静态 Main 函数的类和一个 WPF 窗口。

然后我创建一个 Window 实例并显示它,但在执行后一切都关闭了,因为没有任何东西可以保持线程打开/运行。

添加while(true) 循环使其保持打开状态,但冻结主线程。

while(true) 循环添加到新线程使该线程保持打开状态,但主线程仍完成执行并关闭其他所有线程。

如何让应用程序保持打开状态?

【问题讨论】:

【参考方案1】:

简单的答案是只使用股票 WPF 应用程序项目,而不是滚动您自己的项目,因为它生成的代码会为您处理。

更长的答案是明确使用Application.Run。你可以在这个答案中看到框架做了什么:https://***.com/a/2694710/1783619

这会保持一个长时间运行的线程,这样您的应用程序就不会如您所见那样提前终止。

【讨论】:

我在表单应用程序中看到了 Application.Run,​​但该函数只接受 Windows 表单,我想用 WPF Window 尝试一下。 @Anomaly WPF 版本将使用 WPF Application 对象(请参阅标准 App.xaml.cs)。它是相同的函数调用,如链接的 SO 帖子中所示。【参考方案2】:

创建一个新的 WPF 应用程序/项目:

在 Visual Studio 中执行:文件 -> 新建 -> 项目 -> Visual C# -> WPF 应用程序

【讨论】:

我正在尝试从一个空项目创建 Windowed 应用程序,我知道我可以通过选择适当的项目来创建 WPF 或 Forms 应用程序。 ... 或者至少这样做,以便您可以看到自动生成的代码的作用 使用 WPF 我看不到任何自动生成的代码,只有 WinForms 但它使用 Application.Run(new Form()) 只接受表单 @Anomaly 在这种情况下,直到构建时才会生成自动生成的代码,因此更难找到。它仍然在那里,但仍然做同样的事情:) 这里我为你提供了 WPF 应用程序自动生成的 main 方法的代码:public static void Main() MyApp.UI.App app = new MyApp.UI.App(); app.InitializeComponent(); app.Run(); 你可以在你的项目文件夹 -> obj -> Debug 中找到自动生成的代码

以上是关于阻止应用程序关闭的主要内容,如果未能解决你的问题,请参考以下文章

如何正确使用 IRegisteredObject 阻止应用程序域关闭/回收 Web 应用程序?

VC++实现会议中阻止屏保阻止系统自动关闭屏幕阻止系统待机

如何阻止 C# 控制台应用程序自动关闭? [复制]

阻止访问android中的其他应用程序[关闭]

阻止 Spring Boot 应用程序关闭,直到所有当前请求都完成

在smack中阻止用户[关闭]