我的程序作为服务或控制台运行。我创建了System.Threading.Mutex以仅启动两种模式之一。这是我的代码
public class MyServer
{
// Private variable
System.Threading.Mutex serverMutex;
public MyServer ()
{
bool createdNew;
ServerMutex = new System.Threading.Mutex(true, "MyServerMutex", out createdNew);
if (!createdNew)
{
throw new Exception("Another server instance is running");
}
}
}
首先启动控制台,然后再启动另一个控制台,将引发异常。
首先启动服务和控制台不会引发异常。首先启动控制台,然后启动服务。
有任何想法吗?
我想知道是因为我认为它在几个月前实现该功能时已经准备就绪。
我正在使用.NET 4.0。
谢谢,
弗雷迪
最佳答案
可能的问题是因为您的服务在不同的凭据下运行,因此互斥体不会在用户/会话之间“共享”。
您必须在互斥锁名称前加上"Global\"
看这个good post。
关于c# - 带有服务和控制台的System.Threading.Mutex,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7672596/