当应用程序(桌面c#)在局域网上配置时,如何处理静态变量

本文关键字:何处理 处理 变量 静态 桌面 应用程序 局域网 配置 | 更新日期: 2023-09-27 18:11:29

我构建了一个用于考勤的c#桌面应用程序

应用程序工作正常,当我在单机上运行时,一切都很好。

但现在的问题是…我的老板希望这个应用程序应该在局域网工作,每个客户端都可以从服务器访问应用程序

但是我使用静态变量在运行时存储一些值,然后我在下一个表单中使用这些值。

这里有一个例子…

登录表单上的

用户名存储为静态变量

 public static string username;
username = txtUser.Text.Trim().ToString();

,下一种形式是Home Page,这个用户名被用作

lblName.Text = Login.username;

这里lblName为标签名称,Login为登录表单名称

当我在LAN上配置此应用程序时,可能同时有多个用户将登录并希望访问应用程序,然后每个用户应该看到他/她自己的用户名....

e-g abc为用户1,xyz为用户2

如果两者同时登录,那么我希望abc看到

 lblName.Text = "abc"

和xyz查看

lblName.Text = "xyz" 

那么我该怎么做才能胜任这份工作呢?

我不需要混淆用户之间的任何信息…

我使用c# Windows应用程序。

当应用程序(桌面c#)在局域网上配置时,如何处理静态变量

我假设您在服务器端使用静态变量,对吗?

所以,你的问题发生是因为你使用了静态变量。

在应用程序运行的所有期间,静态变量在类中是一致的。并且该字段在所有可以使用该类的进程之间共享。静态变量就是为此而设计的。

作为一个可能的快速解决方案,您可以生成像唯一会话Id这样的东西。在客户端登录到您的系统时-您只需要在客户端生成该id,将其与登录信息一起发送到服务器。如果身份验证成功,服务器将在缓存中存储id的一个键。并且缓存的值可以是带有用户名和其他需要的对象。

对服务器的每个请求都应该后跟该id。所以你的服务器总是知道它是哪个用户。

如果您需要更详细的答案,请提供有关应用程序网络结构及其模块的更多信息