Это позволяет правильно утилизировать внутренние ручки ожидания.
BlockingCollection<T>
, внутренне, использует пару дескрипторов ожидания события, которые, в свою очередь, имеют связанный собственный HANDLE
.
В частности, BlockingCollection<T>.Dispose()
возвращает эти два дескриптора обратно в операционную систему, в конечном итоге (через SemaphoreSlim-> ManualResetEvent) вызывая собственный CloseHandle метод для двух собственных HANDLE
экземпляров.