如果电源故障/拔出电脑,如何处理电源故障,未注销用户

时间:2013-08-24 18:20:55

标签: c# sql-server-2008-r2

首先,我有一个表LoginAntounts与Column LoginStatus 如果用户登录用户loginstatus = 1,如果他注销,则为= 0

如果用户意外插拔计算机或发生电源故障,您认为会处理哪些代码?我需要更改loginstatus = 0,否则如果发生这些事件,它将自动注销。

顺便说一下我使用sql server

我已经在表单关闭时使用了此代码,但只有在应用程序运行时直接从开始菜单关闭计算机时才会更改loginstatus

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;
    }
}

2 个答案:

答案 0 :(得分:1)

一种可能的解决方案是跟踪应用程序未完全关闭的事实。我......在应用程序启动时设置的持久介质中保存了一个标志,当应用程序存在时,它会被重置。

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

答案 1 :(得分:0)

无法在电源故障的计算机上运行应用程序中的突然电源故障。电源出现故障时,计算机将停止运行,应用程序将不会收到警告。

对于电源模式更改的情况,例如计算机暂停或关闭,您可以在SystemEvents上使用以下事件

  • SystemEvents.PowerModeChanged
  • SystemEvents.SessionEnding

这两个都可以响应计算机上的特定电源事件而引发。这可能就是你要找的东西