C#Windows应用程序阻止Windows关闭/注销

时间:2010-03-23 08:27:49

标签: c# windows handler logoff

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

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

现在,我的程序是否有可能让Windows知道(获取处理程序)尝试退出或注销?

因此,我需要的是在Windows尝试退出时实现应用程序。

提前致谢。

编辑:感谢您提出的建议!如果它具有CANCEL事件处理程序,那么以任何方式使用表单结束事件吗?

4 个答案:

答案 0 :(得分:10)

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
    }
}

答案 1 :(得分:5)

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

答案 2 :(得分:2)

我认为Capture console exit C#也应该适用于你的场景。

除此之外,将线程设置为background thread可能就足够了吗?

答案 3 :(得分:1)