【发布时间】:2013-04-24 18:48:09
【问题描述】:
我用 C# 编写了一个应用程序,它放置在我们的服务器上。 当有人需要使用它时,应用程序会直接从服务器启动,从我们局域网中任何连接的 PC 启动。
有什么简单的方法可以检查有多少实例正在运行?或者更确切地说,如果有任何其他实例而不是由我启动的实例?
编辑:
这不是提供的帖子的副本,因为我不想确保只有一个实例在运行(如“不要同时运行超过 1 个应用程序”),而只是检查,是否有人在运行它(在正常情况下,它必须同时在多台 PC 上运行)
【问题讨论】:
-
启动为“在服务器上运行”或“当文件位于服务器上时在用户计算机上本地运行”?
-
此应用在每台 PC 本地运行,但可执行文件在服务器上。所以第二个选项。
-
可以在服务启动时创建一个全局命名的互斥锁,在服务关闭时释放。然后任何其他进程也可以尝试创建一个同名的全局互斥锁,看看它是否创建了它。请参阅this thread 了解打开互斥锁的正确方法。