This allows you to delete internal wait descriptors.
BlockingCollection<T> , inside, uses a pair of event wait descriptors, which in turn have a native HANDLE .
In particular, BlockingCollection<T>.Dispose() releases these two handles back to the operating system, eventually (via SemaphoreSlim-> ManualResetEvent), calling its own CloseHandle method in two instances of native HANDLE .
Reed copsey
source share