会话结束事件不起作用

ala*_*a27 5 .net c# wpf windows-7

我想让用户决定在Windows关闭或注销时是否要在我的应用程序上执行最后一个请求。因此,我正在使用“ SessionEnding”事件。

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

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

void App_SessionEnding(object sender, SessionEndingCancelEventArgs e)
{
        e.Cancel = true;
}
Run Code Online (Sandbox Code Playgroud)

恐怕我以前在计算机中使用过Boost程序(例如CCleaner),并且某种程度上它使该事件无效。= O

当我向事件中添加MessageBox并请求注销计算机时,MessageBox出现,但是我没有时间单击某处,因为1秒钟后系统注销。系统似乎没有在等待我的应用程序。

Obs:我正在使用Windows 7。

小智 1

我尝试了您的代码示例,但没有成功...但是我将其放入主窗口中,导致应用程序关闭,并且 MessageBox 无限期地显示,直到我单击关闭。这有帮助吗?

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

        base.OnClosing(e);
    }
Run Code Online (Sandbox Code Playgroud)