L'oggetto Semaphore serve per sincronizzare l'accesso a una risorsa da parte dei thread. Esso fa in modo che non più di N thread possano accedere simultaneamente a una risorsa. Quando uno di essi ha terminato il proprio compito, invoca il metodo Release, che modifica il contatore interno al semaphore e permette l'accesso ad altre parti di codice.
Nel tuo caso, si è chiamato Semaphore.Release una volta di troppo...
|