未登录的用户如果电源故障/拔下电脑插头,如何处理电源故障

本文关键字:故障 电源 何处理 处理 用户 登录 如果 电脑 | 更新日期: 2023-09-27 18:28:58

首先我有一个具有列登录状态的表UserAccounts如果用户登录到用户登录状态=1,否则如果他注销,则为=0

如果用户不小心拔掉电脑插头或发生电源故障,你认为该处理什么代码。我需要更改loginstatus=0,否则如果发生这些事件,它将自动注销。

顺便说一句,我使用sql server

我在表单关闭中使用了这段代码,但只有在应用程序运行时直接从"开始"菜单关闭计算机,它才会更改登录状态

private void MPTestTablesFormClosing(object sender, FormClosingEventArgs e)
{
    if(e.CloseReason == CloseReason.WindowsShutDown)
    {
       var repo = new UserAccountsRepo();
       var backRepo = new UserLogRepo();
       var logs = new UserLogs
       {
          UserAccount = Globals.UserAccount,
          LogOutTime = DateTime.Now
       };
       Globals.UserAccount.LogStatus = 0;
       repo.Update(Globals.UserAccount);
       backRepo.Update(logs);
       Globals.UserAccount = null;
    }
}

未登录的用户如果电源故障/拔下电脑插头,如何处理电源故障

一个可能的解决方案是跟踪应用程序没有干净关闭的事实。I..我们在持久介质中的某个位置保存了一个标志,该标志在应用程序启动时设置,并在应用程序干净存在时重置。

然后在启动时检查此标志。如果它仍然被设置,那么您就知道您的应用程序没有干净地退出,并且您可以采取适当的(恢复)步骤来恢复到稳定的未损坏状态。

在出现电源故障的情况下,处理运行在计算机上的应用程序中的突然电源故障是不可能的。当电源出现故障时,计算机将停止运行,应用程序将不会收到任何警告。

对于电源模式发生变化的情况,如计算机被挂起或关闭,您可以在SystemEvents 上使用以下事件

  • SystemEvents.PowerModeChanged
  • SystemEvents.SessionEnding

这两个都可以响应计算机上的特定电源事件而引发。这可能就是您正在寻找的