Winforms 在Windows窗体应用程序中标识当前会话:会话ID?

Winforms 在Windows窗体应用程序中标识当前会话:会话ID?,winforms,session,Winforms,Session,在ASP.NET中,每个会话都可以通过其SessionID变量进行标识。目前,我正在进行一个项目,我希望能够识别每个单独的用户会话。换句话说,我正在寻找会话标识符或等效变量 我查看了Application、Environment和AppDomain类,但找不到这样的变量。所以我的问题是:应该如何识别应用程序当前正在处理的会话?也许可以满足您的需要?这将为您提供一个唯一标识系统上当前正在运行的进程的数字。该编号仅在进程运行时有效,并且当它退出时,任何其他进程在启动时都可能被分配相同的编号。我不太确

在ASP.NET中,每个会话都可以通过其SessionID变量进行标识。目前,我正在进行一个项目,我希望能够识别每个单独的用户会话。换句话说,我正在寻找会话标识符或等效变量


我查看了Application、Environment和AppDomain类,但找不到这样的变量。所以我的问题是:应该如何识别应用程序当前正在处理的会话?

也许可以满足您的需要?这将为您提供一个唯一标识系统上当前正在运行的进程的数字。该编号仅在进程运行时有效,并且当它退出时,任何其他进程在启动时都可能被分配相同的编号。

我不太确定我是否了解您,但是如果您试图跟踪应用程序生命周期的每个实例,您可以在适当的位置创建GUID作为实例成员。每当您觉得新的“会话”已创建时,您都可以创建并存储此GUID—可能是在用户登录时(如果您没有登录机制,则加载主窗体)


当然,我假设你有一个多用户的环境,并且连接了某种服务器,否则我就看不到会话的必要性

您可以检查环境类中的一些选项,例如Environment.UserName、Environment.MachineName或Environment.UserDomainName

这就是我目前所做的。不过,我还想区分来自同一用户的两个应用程序启动事件。听起来是朝着正确方向迈出的一步。但是,我不能保证用户下次启动应用程序时,进程ID与第一次启动(“会话”)的ID不相同?不,理论上,您可以连续启动应用程序两次,并获得相同的进程ID。唯一的保证是在给定系统上,永远不会有两个进程以相同的id同时运行。如果在应用程序关闭时删除与会话相关的信息,这应该不会是一个问题。我已经查看了System.Diagnostics.Process.GetCurrentProcess(),虽然有一个属性SessionID,但属性StartTime基本上满足了我的需要。可以根据会话的开始时间来识别会话。对于我正在进行的项目,这就足够了。谢谢