According to the documentation:
\"a
SemaphoreSlimdoesn\'t use a Windows kernel semaphore\".
Are there any special
If you access the AvailableWaitHandle property, then Yes, you must call Dispose() to cleanup unmanaged resources.
If you do not access AvailableWaitHandle, then No, calling Dispose() won't do anything important.
SemaphoreSlim will create a ManualResetEvent on demand if you access the AvailableWaitHandle. This may be useful, for example if you need to wait on multiple handles. If you do access the AvailableWaitHandle property, and then fail to call Dispose() you will have a leaked ManualResetEvent, which presumably wraps a handle to an unmanaged CreateEvent resource that needs a corresponding call to CloseHandle to clean up.
As other posters have pointed out, you should call Dispose() when you are done with any object that implements IDisposable. In this case, there are several risks to ignoring that practice, even though it may technically be safe to do so: