如何检查某人是否正在运行我的程序?

如何检查某人是否正在运行我的程序?

问题描述:

我有一个10-20人全天使用的程序。由于事情正在迅速波动,我偶尔需要将数据库脱机,或者出于其他原因重新启动服务器。我想有一个更好的方法来确保目前没有人参与该计划,而不是走向每个人并问他们。如何检查某人是否正在运行我的程序?

我不想重新发明轮子,如果这样的事情已经存在。

我所做的是在思考:

  • 创建数据库“历史”进入用户每次打开或关闭程序,看看谁正在使用该系统。
  • 使用WCF让客户端“告诉”服务器每隔X秒连接一次。

有没有更好或更容易解决这个问题的方法?

+0

它是什么样的“程序”,ASP.NET,WPF,Winforms,...? – 2012-03-05 22:52:45

+0

这是一个Winforms程序 – Origin 2012-03-05 23:01:52

+0

也许你的数据库保留了当前登录用户的记录,你可以查询。其中一个系统表... – Dialecticus 2012-03-05 23:06:53

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

它的原始但它的工作原理,然后你有一个简单的数据库查询运行。

+0

谢谢。这是我一直在考虑的选项 - 但不确定它是否被其他人视为“黑客”。 – Origin 2012-03-05 22:58:00

+1

对不起,这对我来说确实是'hackish'... – Steve 2012-03-05 23:22:05

+0

感谢LongArm的回应。不幸的是,所有抱怨你的答案有多糟糕的人都没有发布自己的答案。我决定使用诸如'net session','net file'和'netstat |之类的窗口函数找到“{portNumberOfSqlServer}”来找出当前连接到机器的人。 – Origin 2012-03-27 02:12:49

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

我不知道这种解决方案在您的情况下是否可行,但我认为这个解决方案对于某些人来说至少可以派上用场。