【问题标题】:WinForm Application Prevents Machine Restart?WinForm 应用程序阻止机器重启?
【发布时间】:2010-09-17 17:42:15
【问题描述】:

我有一个 WinForm 应用程序,当它打开并且我尝试重新启动计算机时,我的计算机只是挂起并且没有重新启动。我必须实际关闭 WinForm 应用程序,然后重新启动,然后我的计算机就会重新启动。

我能做些什么来解决这个问题?

    private void Form1_FormClosing(object sender, FormClosingEventArgs e)
    {
        if (!BoolShouldThisClose)
        {
            e.Cancel = true;
            this.Visible = false;
        }
    }

【问题讨论】:

  • 您是否手动处理了winform应用程序的关闭事件。但即便如此,我相信系统应该已经终止了该进程。
  • 应用程序的流程/工作是什么。如果您可以与我们分享有关该应用的更多详细信息,我认为我们可以提供帮助。
  • 其实,既然你提了,我就提。我想将我的表单最小化到系统托盘,而不是在按下“X”时关闭它。所以是的,不知道当我的计算机想要关闭应用程序时我将如何解决这个问题......

标签: c# winforms restart


【解决方案1】:

请务必注意 CloseReason,这样您就不会阻止 Windows 尝试关闭您的表单。像这样:

    protected override void OnFormClosing(FormClosingEventArgs e) {
        if (e.CloseReason == CloseReason.UserClosing) {
            this.Hide();
            e.Cancel = true;
        }
        else base.OnFormClosing(e);
    }

【讨论】:

  • 我有这样的东西,所以它一定会阻止关闭。我该如何解决这个问题?
  • 我认为它不是这样的。我无法猜测,在您的问题中发布您的代码的 sn-p。
  • @Soo:你在哪里测试代码中的 e.CloseReason 值?
  • CloseReason.UserClosing 仅当用户试图关闭应用程序而不是计算机时?
  • 对,只有当用户正在关闭窗口时你才想取消它。
【解决方案2】:

您是否在应用程序中生成了线程并且它们正在运行?如果是这样,请确保将它们设置为 IsBackground = true。

【讨论】:

    猜你喜欢
    • 2018-01-30
    • 2012-12-07
    • 1970-01-01
    • 2020-12-13
    • 2012-12-09
    • 1970-01-01
    • 1970-01-01
    • 2010-11-15
    • 1970-01-01
    相关资源
    最近更新 更多