首先,我有一个表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;
}
}
答案 0 :(得分:1)
一种可能的解决方案是跟踪应用程序未完全关闭的事实。我......在应用程序启动时设置的持久介质中保存了一个标志,当应用程序存在时,它会被重置。
然后在启动时检查此标志。如果它仍然设置,您知道您的应用程序没有干净地退出,并且您可以采取适当的(恢复)步骤以恢复到稳定的未损坏情况。
答案 1 :(得分:0)
无法在电源故障的计算机上运行应用程序中的突然电源故障。电源出现故障时,计算机将停止运行,应用程序将不会收到警告。
对于电源模式更改的情况,例如计算机暂停或关闭,您可以在SystemEvents
上使用以下事件
SystemEvents.PowerModeChanged
SystemEvents.SessionEnding
这两个都可以响应计算机上的特定电源事件而引发。这可能就是你要找的东西