I'm having trouble creating a Semaphore with read-access rights for
everyone. Originally I was trying to use this code:
semaphore = new Semaphore(maxLocks, maxLocks, "RwLock#" + name);
but when using that code to create a Semaphore instance for an
existing system semaphore (i.e., the second time the code gets hit), I
get an UnauthorizedAccessException. So I tried specifying that
everyone has read rights:
var sec = new SemaphoreSecurity();
sec.AddAccessRule(new SemaphoreAccessRule("Everyone",
SemaphoreRights.ReadPermissions, AccessControlType.Allow));
bool createdNew;
semaphore = new Semaphore(maxLocks, maxLocks, "RwLock#" + name, out
createdNew, sec);
But I still get the same error.
The error occurs when running unit tests and happens even when
creating the Semaphore twice in the same process with the same user.
I'm only creating the Semaphore in .NET from this one application.
The full error is
System.UnauthorizedAccessException: Access to the port is denied.
at System.IO.Ports.InternalResources.WinIOError(Int32 errorCode,
String str)
at System.Threading.Semaphore..ctor(Int32 initialCount, Int32
maximumCount, String name, ref Boolean createdNew, SemaphoreSecurity
semaphoreSecurity)
at Common.InterProcessReaderWriterLock..ctor(String name, Int32
maxLocks) in InterProcessReaderWriterLock.cs: line 39
Any help would be appreciated.
Thanks,
Sam
------------------------------------------------------------
We're hiring! B-Line Medical is seeking .NET
Developers for exciting positions in medical product
development in MD/DC. Work with a variety of technologies
in a relaxed team environment. See ads on Dice.com.