2010-07-06 9 views

Répondre

9

Cela permet de disposer correctement des poignées d'attente internes.

BlockingCollection<T> utilise, en interne, une paire de handles d'attente d'événement, qui à leur tour ont un HANDLE natif associé.

Plus précisément, ces deux BlockingCollection<T>.Dispose() libère poignées dans le système d'exploitation, par la suite (par SemaphoreSlim-> ManualResetEvent) appelant la méthode CloseHandle native sur les deux HANDLE natifs cas.

-4

Libère toutes les ressources utilisées par l'instance actuelle de la classe BlockingCollection<T>. (Source)

+2

C'est vrai, mais vague ... –

+2

-1. C'est inutile. –

4

Avoir un coup d'œil rapide avec réflecteur révèle ce ...

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; 
    } 
} 

et m_freeNodes est private SemaphoreSlim m_freeNodes; il libère le SemaphoreSlim qui sont utilisés en interne.