【问题标题】:Process continue after closing application c#关闭应用程序c#后继续处理
【发布时间】:2017-02-12 13:26:03
【问题描述】:

我是 C# 的初学者,我正在尝试制作 WFA 应用程序。但是有一个问题。当我运行它时,它显示第一个(登录)表单,如果我在没有登录的情况下关闭它,它会正常工作,但是当我登录时,第一个表单隐藏,第二个表单显示,如果我通过单击 X 按钮关闭它,表单消失了,但我可以看到任务管理器中正在运行的进程。在第二个表单上也是注销按钮,如果我单击按钮,它会隐藏第二个表单,并显示第一个(登录)表单,如果我关闭它,仍然进程在后台运行。 通过 X 按钮关闭应用程序时,如何停止在后台运行的进程? 我正在搜索,但找不到解决问题的方法。 (我发现了一些可以附加到进程并查看线程的东西,但是它们太多了)

有隐藏创建表单的代码等:

如果登录 frmLogin 隐藏 -> 显示 frmMail
如果注销 frmMail 隐藏 -> 显示 frmLogin。

如果用户成功登录:

this.Hide();
frmMail f2 = new frmMail();
f2.Show();

如果用户点击“退出”按钮:

this.Hide();
frmLogin f1 = new frmLogin();
f1.Show();

我找到了解决方案,如果每个人都有同样的问题,这可能会有所帮助。 How to switch between forms without creating new instance of forms?

How do I prevent the app from terminating when I close the startup form?

【问题讨论】:

  • 进程还在运行,因为启动窗体还没有关闭。它是隐藏的,用户无法对其进行任何操作。您似乎还创建了一个新的登录表单,而不是使用现有的登录表单。好吧,这不是这样做的方法。很多可能的修复,但请考虑changing the way your app terminates,这样您就不必隐藏任何内容,只需关闭不需要的窗口即可。
  • @HansPassant 现在我知道了。我将该代码(从改变方式..)粘贴到 Program.cs,但我不太确定我需要在 frmLogin.cs 和 frmMail.cs 中做什么才能使其正常工作。
  • 不要调用 Hide(),调用 Close()。显示新表格后。现在很简单。

标签: c# .net winforms visual-studio


【解决方案1】:

在你的情况下我会做的很简单。 拳头我会覆盖FormClose_Event,像这样

void Form_FormClosing(object sender, FormClosingEventArgs e)
{
  //And here you can call 
  Application.Exit(); 
  // which this will cause to close everything in your application
  //Also if you want to be more aggressive, there is another option, you can  
  //use, Environment.Exit(1), which will basically kill you process.
}

希望我的回答能帮到你,祝你有个愉快的一天!

【讨论】:

  • 谢谢,就是这样。我使用了类似的代码,它可以工作!
猜你喜欢
  • 2019-07-18
  • 1970-01-01
  • 2019-01-02
  • 2020-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多