我编写了一个C#Windows窗体应用程序,而不是一个服务(它仅在用户登录并具有图形用户界面时使用),后台线程在无限循环中运行。
但是,当我尝试关闭Windows(7)时,它会告诉我程序正在阻止它关闭或注销,并询问我是否要强制关闭。
现在,我的程序是否有可能让Windows知道(获取处理程序)尝试退出或注销?
因此,我需要的是在Windows尝试退出时实现应用程序。
提前致谢。
编辑:感谢您提出的建议!如果它具有CANCEL事件处理程序,那么以任何方式使用表单结束事件吗?答案 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)