【发布时间】:2013-10-05 10:43:37
【问题描述】:
我想让用户决定他是否想在 Windows 关闭或注销时对我的应用程序执行最后一个请求。所以我使用的是“SessionEnding”事件。
以下代码被触发但不起作用。这是最简单的例子:
public App()
{
this.SessionEnding += App_SessionEnding;
}
void App_SessionEnding(object sender, SessionEndingCancelEventArgs e)
{
e.Cancel = true;
}
我担心我以前在我的电脑上使用过一个增强程序(比如 CCleaner),不知何故它停用了这个事件。 =O
当我在事件中添加一个 MessageBox 并请求注销我的计算机时,会出现 MessageBox,但我没有时间点击某个地方,因为 1 秒后系统注销。系统似乎没有等待我的申请。
Obs:我使用的是 Windows 7。
【问题讨论】:
-
这是您程序中的代码,还是您的实际代码中有 MessageBox?
-
上面的代码是最简单的例子。但我也尝试在“e.Cancel = true”之前调用 MessageBox.Show()。它显示了,但系统一直关闭。
-
试试你发布的代码,看看它是否有效。 Windows 不应等待您的 MessageBox 返回结果。我知道如果这样做我会很生气。
-
我确实尝试了我发布的代码。它没有用=D。
-
我正在与同样的问题作斗争。如果应用程序花费的时间太长并且异步部分有等待的东西,Windows 似乎只会杀死应用程序。