在C# WinForms程序中跟踪程序状态(登录等)的最佳方法是什么?

3

我正在开发一个WinForms应用程序,其中包含登录功能,我想要跟踪状态(即已登录或已注销)。我在SO上看到了其他答案,如这个,谴责使用公共或全局变量的做法:

public static bool LoggedIn;

private void btnLogin_Click(object sender, EventArgs e)
{
    //do some stuff
    LoggedIn = true;
}

那么,跟踪程序用户状态或其他变量的最佳方法是什么?它们应该在整个程序中都可以访问。非常感谢!


我认为你应该使用枚举来设置和获取用户的当前状态。 - Max
请解释为什么您认为需要“公共或全局变量”来跟踪这个。其他类关心什么?如果它们错了会发生什么?类会崩溃吗?如果是这个问题,请修复您的类。如果只有少数类需要知道,请将数据传递给该类或将其设置为protectedinternal - Dour High Arch
@DourHighArch 我想在任何时候都知道用户是已登录还是未登录,并且我需要以不同形式访问这些信息。 我知道的唯一方法是创建一个公共变量并将信息存储在其中。 - gnarlybracket
1个回答

1
那样做虽然可行,但在我看来是不好的实践。更好的做法是使用singleton类,它将管理所有用户功能。想象一下如果您正在使用线程,一个线程正在注销,另一个正在登录,而另一个线程正在尝试将某些内容记录到数据库中。单例是一个线程安全模式,将为您提供很多灵活性。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接