如何在服务器上只允许创建一个命名的信号量?

时间:2013-06-07 17:56:00

标签: .net semaphore

我想在我的应用中创建一个信号量,如果应用的另一个实例正在运行并且已经创建了信号量,那么创建将失败(有明显的例外)。所以每个服务器只有一个。

我希望系统只有一个限制,而不仅仅是CLR。但我不希望它跨越多个服务器(或VM)。即我希望该应用程序能够在2个不同的服务器上运行。

这可能吗?如果是这样,怎么样?

谢谢 - 戴夫

1 个答案:

答案 0 :(得分:1)

您可以使用System.Threading.Mutex

  

命名系统互斥体在整个操作系统中都是可见的,可用于同步进程的活动。

bool b = true;
Mutex mutex = new Mutex(true, "MyMutex", out b);
if (!b) throw new InvalidOperationException("Another instance is running");