【问题标题】:How do I allow only 1 named Semaphore to be created on a server?如何只允许在服务器上创建 1 个命名信号量?
【发布时间】:2013-06-07 17:56:00
【问题描述】:

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

我希望整个系统只能保留一个,而不仅仅是 CLR。但我不希望它跨越多个服务器(或虚拟机)。即,我希望应用程序能够在 2 个不同的服务器上运行。

这可能吗?如果有,怎么做?

谢谢 - 戴夫

【问题讨论】:

标签: .net semaphore


【解决方案1】:

您可以为此使用System.Threading.Mutex

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

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

【讨论】:

  • 有没有办法在 Mutex 中进行计数?我主要将信号量用于计数机制。唯一的一个应用是次要需求。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-01
  • 2011-12-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-26
相关资源
最近更新 更多