2010-07-06 85 views

回答

9

这可以正确处置内部等待手柄。

BlockingCollection<T>在内部使用一对事件等待句柄,该句柄又具有关联的本地HANDLE

具体地说,BlockingCollection<T>.Dispose()释放这两个手柄返回到操作系统,由最终(通过SemaphoreSlim-> ManualResetEvent的)调用两种天然HANDLE实例天然CloseHandle方法。

-4

释放当前BlockingCollection<T>类实例使用的所有资源。 (Source

+2

这是真的,但含糊不清...... – 2010-07-06 17:25:57

+2

-1。这是无益的。 – 2010-07-06 17:32:45

4

有一个快速浏览一下与反射镜显示这...

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_freeNodesprivate SemaphoreSlim m_freeNodes;所以它释放出在内部使用的SemaphoreSlim。

相关问题