The count on the semaphore before the erload:System.Threading.Semaphore.Release method was called.
Threads typically use the erload:System.Threading.WaitHandle.WaitOne method to enter the semaphore, and they typically use this method overload to exit.
If a System.Threading.SemaphoreFullException is thrown by the erload:System.Threading.Semaphore.Release method, it does not necessarily indicate a problem with the calling thread. A programming error in another thread might have caused that thread to exit the semaphore more times than it entered.
If the current System.Threading.Semaphore object represents a named system semaphore, the user must have System.Security.AccessControl.SemaphoreRights.Modify rights and the semaphore must have been opened with System.Security.AccessControl.SemaphoreRights.Modify rights.