gpt4 book ai didi

c# - 一次只允许每个用户登录一次

转载 作者:行者123 更新时间:2023-11-29 00:20:25 25 4
gpt4 key购买 nike

我打算用 C# 编写一个应用程序,一次只允许一个登录用户连接。我将在我的 SQL 数据库中有一个名为 LoggedOn 的 bit 列,当登录时,我将检查数据库是否显示 loggedon = true,例如。

if (Loggedon == true) {
//Login things
} else {
//it appears you are already logged on.
}

我的问题是如果我的程序意外关闭怎么办?

例如:强制关闭或任务管理器结束进程,我如何才能在有人这样做之前运行查询以防止对我的数据库进行任何更改。

我不确定我是否解释得足够好,但这是我的代码

   protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
string myConnection = "******;";
MySqlConnection conn = new MySqlConnection(myConnection);
conn.Open();
MySqlCommand comm = conn.CreateCommand();
comm.CommandText = "INSERT INTO users LoggedOn = 'False' where username = '" + Form1.TextBoxText + "'";
comm.ExecuteNonQuery();
conn.Close();
base.Dispose(disposing);
}

此代码是否涵盖所有意外关闭?是否有其他简单快速的方法可以做到这一点?

事件处理程序能解决我的问题吗?像这样: http://msdn.microsoft.com/en-us/library/system.appdomain.unhandledexception.aspx

最佳答案

连同单例和登录持久性,以下将有助于解决应用程序崩溃的情况:

如果您想在数据库中保留 Loggedon 以确保用户不会从世界上任何其他地方登录到系统,您可以使用心跳计时器来保持 Loggedon 的值更新。因此,每隔几分钟,客户端就会更新数据库以指示用户仍处于登录状态。这将处理应用程序崩溃的情况。

还有其他方法,例如:如果用户再次登录,您可以注销该用户的所有其他 session 。或者你可以用看门狗定时器代替心跳 - 非常相似,但看门狗本质上确保长时间运行的 session 实际上处于事件状态

关于c# - 一次只允许每个用户登录一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21272548/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com