我的程序作为服务或控制台运行。我创建了一个 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。
谢谢, 弗莱迪
最佳答案
可能的问题是因为您的服务在不同的凭据下运行,所以互斥锁不会在用户/ session 之间“共享”...
您必须在互斥量的名称前加上 "Global\"
看这个good post .
关于c# - 带服务和控制台的 System.Threading.Mutex,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7672596/