【问题标题】:C# Windows application prevents Windows from shutting down / logging offC# Windows 应用程序防止 Windows 关闭/注销
【发布时间】:2010-03-23 08:27:48
【问题描述】:

我编写了一个 C# Windows 窗体应用程序,而不是一个后台线程无限循环运行的服务(仅在用户登录并具有图形用户界面时使用)。

但是,当我尝试关闭 Windows (7) 时,它告诉我程序正在阻止它关闭或注销,并询问我是否要强制关闭。

现在,我的程序是否有可能意识到(获取处理程序)Windows 试图退出或注销?

所以,我需要让应用程序在 Windows 尝试退出时意识到这一点。

提前致谢。

编辑:感谢您的宝贵建议!如果它有一个 CANCEL 事件处理程序,是否可以将这个想法与表单关闭事件一起使用?

【问题讨论】:

  • 你可以通过点击右上角的关闭按钮来退出你的应用程序吗?如果是这种情况,应用程序不应阻止关机。否则你需要先处理这种情况。

标签: c# windows handler logoff


【解决方案1】:
public Form1()
{
    InitializeComponent();

    this.FormClosing += new FormClosingEventHandler(Form1_FormClosing);
}

void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
    // Or any of the other reasons suitable for what you want to accomplish
    if (e.CloseReason == CloseReason.WindowsShutDown)
    {
        //Stop your infinite loop
    }
}

【讨论】:

  • 谢谢。这真的帮助了我。我删除了 Cancel Handler 并使用了这个,只有当它是 Windows 关闭它退出的应用程序时。
【解决方案2】:

您将该线程称为“后台线程”,但它有 IsBackground = true; 吗?
系统只会停止执行此操作的线程。

【讨论】:

    【解决方案3】:

    我认为Capture console exit C# 也应该可以在您的场景中使用。

    除此之外,也许将您的线程设置为background thread就足够了?

    【讨论】:

      【解决方案4】:

      【讨论】:

        猜你喜欢
        • 2017-07-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-04
        • 1970-01-01
        相关资源
        最近更新 更多