2013-09-29 71 views
4

我想让用户决定当Windows关闭或注销时,他是否想在我的应用程序上执行最后一次请求。所以我正在使用“SessionEnding”事件。会话结束事件不起作用

以下代码被触发但不起作用。这是最简单的例子:

public App() 
{ 
     this.SessionEnding += App_SessionEnding; 
} 

void App_SessionEnding(object sender, SessionEndingCancelEventArgs e) 
{ 
     e.Cancel = true; 
} 

恐怕我以前使用升压程序在我的电脑(如CCleaner的),不知何故就停用了此事件。 = O

当我添加一个MessageBox到事件中,并且我要求注销我的计算机时,MessageBox出现,但我没有时间点击某处,因为1秒后系统注销。该系统似乎不等待我的申请。

观测值:我使用Windows 7

+0

这是你在你的程序有代码,还是你在你的实际代码一个消息? – Aron

+0

上面的代码是最简单的例子。但我也试图在“e.Cancel = true”之前调用MessageBox.Show()。它显示,但系统一直关闭。 – Seva

+0

尝试你已发布的代码,看看它是否有效。 Windows不应该等待您的MessageBox返回结果。如果是的话,我知道我会生气。 – Aron

回答

1

我想你的代码没有成功的样本......但是我把这个到导致应用程序关闭我的主窗口,并无限期显示的消息框,直到我点击关闭。这可以帮助吗?

protected override void OnClosing(System.ComponentModel.CancelEventArgs e) 
    { 
     MessageBox.Show("Blah", "Blah", MessageBoxButton.OK); 

     base.OnClosing(e); 
    } 
+0

感谢您的尝试。我会考虑的。 – Seva

+0

恩,它没有工作= /。我跑了应用程序,并在Windows注销,并没有奏效。简单的注销系统而无需等待任何东西。 – Seva

+0

你有一个单独的登录窗口的主要。代码应该在关闭应用程序的窗口中 – 2013-10-02 13:23:24