.net 如何检查是否有人在运行我的程序?

.net 如何检查是否有人在运行我的程序?,.net,vb.net,winforms,.net,Vb.net,Winforms,我有一个程序,每天有10-20人使用。由于情况瞬息万变,我有时不得不让数据库离线,或者出于其他原因重新启动服务器。我想有一个更好的方法来确保目前没有人参与该计划,而不是走到每个人面前询问他们 如果这样的东西已经存在,我不想重新发明轮子 我的想法是: 每次用户打开或关闭程序时,创建一个数据库“历史记录”条目,以查看当前使用系统的用户 使用WCF让客户端每隔X秒“告诉”服务器它们已连接 有更好或更简单的解决方案吗?一种解决方案是创建一个数据库表,每当有人登录时,都会为他们创建一条记录。每15分钟

我有一个程序,每天有10-20人使用。由于情况瞬息万变,我有时不得不让数据库离线,或者出于其他原因重新启动服务器。我想有一个更好的方法来确保目前没有人参与该计划,而不是走到每个人面前询问他们

如果这样的东西已经存在,我不想重新发明轮子

我的想法是:

  • 每次用户打开或关闭程序时,创建一个数据库“历史记录”条目,以查看当前使用系统的用户
  • 使用WCF让客户端每隔X秒“告诉”服务器它们已连接

有更好或更简单的解决方案吗?

一种解决方案是创建一个数据库表,每当有人登录时,都会为他们创建一条记录。每15分钟更新一次上次更新时间。当它们关闭时,它将删除记录。如果任何记录长度超过15分钟,则表示应用程序崩溃


它很粗糙,但可以工作,然后您就可以运行一个简单的数据库查询。

一个解决方案是使用
UdpClient
在网络上广播一些数据,并查找响应以查看应用程序的任何实例是否在线


我不知道这个解决方案在您的情况下是否可行,但我想这个解决方案至少对某些人来说是有用的。

它是什么样的“程序”,ASP.NET、WPF、Winforms等等?它是一个Winforms程序也许您的数据库保存了当前登录用户的记录,您可以直接查询。其中一个系统表…您使用的是哪种数据库?SQLServer、Access、MySQL或…听起来好像你有更大的问题,如果你必须把生产数据库在工作日中间脱机。安排下班后的维护。谢谢。这是我一直在考虑的选择——但不确定是否被其他人认为是“黑客”的选择。感谢长臂回复。不幸的是,所有抱怨你的答案有多糟糕的人都没有发布他们自己的答案。我决定只使用windows函数,如
net session
net file
,和
netstat | find“{portNumberOfSqlServer}
,来确定谁当前连接到了机器。