【发布时间】:2013-01-25 21:46:39
【问题描述】:
我不知道这是否是设计使然,但我似乎无法以标准用户或高级用户的身份在 Windows 7 上创建新的信号量。
SemaphoreSecurity semSec = new SemaphoreSecurity();
// have also tried "Power Users", "Everyone", etc.
SemaphoreAccessRule rule = new SemaphoreAccessRule("Users", SemaphoreRights.FullControl, AccessControlType.Allow);
semSec.AddAccessRule(rule);
bool createdNew = false;
// throws exception
sem = new Semaphore(1, 1, SEMAPHORE_ID, out createdNew, semSec);
return true;
我收到了一个 UnauthorizedAccessException 消息“访问端口被拒绝。”
这可能吗?
【问题讨论】:
-
我相信,在所有这些中,只有互斥锁可以在进程间工作。而且互斥锁并没有发出我需要的信号——任何线程都可以在信号量上调用release(),而使用互斥锁,只有获得锁的线程才能释放它,并且没有计数机制。
标签: c# .net windows-7 synchronization semaphore