Что делает BlockingCollection. Расположите на самом деле делают?

Что делает BlockingCollection. Расположите на самом деле делают?

8
задан Jonathan Allen 6 July 2010 в 17:21
поделиться

3 ответа

Это позволяет правильно удалить внутренние дескрипторы ожидания.

BlockingCollection внутренне использует пару дескрипторов ожидания событий, которые, в свою очередь, имеют связанный собственный HANDLE .

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

11
ответ дан 5 December 2019 в 21:16
поделиться

Быстрый взгляд на отражатель показывает, что это ...

protected virtual void Dispose(bool disposing)
{
    if (!this.m_isDisposed)
    {
        if (this.m_freeNodes != null)
        {
            this.m_freeNodes.Dispose();
        }
        this.m_occupiedNodes.Dispose();
        this.m_isDisposed = true;
    }
}

и m_freeNodes - это частный SemaphoreSlim m_freeNodes; , поэтому он освобождает SemaphoreSlim, который используется внутри.

4
ответ дан 5 December 2019 в 21:16
поделиться

Освобождает все ресурсы, используемые текущим экземпляром класса BlockingCollection . ( Источник )

-8
ответ дан 5 December 2019 в 21:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: