我有一個使用FileSystemWatcher類的程序。它通過在文件夾中的每個子文件夾中添加新的FileSystemWatcher來工作,每個FileSystemWatcher需要8 kB的內存。FileSystemWatcher處理後需要內存嗎?
FileSystemWatchers被添加到列表「監視器」,其中可能是成千上萬的。
當我打電話方法
watchers.ForEach(x => x.Dispose());
我希望所有的人都停止(他們沒有),但沒有內存從RAM釋放。
我該如何解決這個問題?
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
protected virtual void Dispose(bool disposing)
{
if (!disposed)
{
if (disposing)
{
watchers.ForEach(x => x.Dispose());
watchers.Clear();
}
disposed = true;
}
}
不會[[IncludeSubdirectories]](https://msdn.microsoft.com/en-us/library/system.io.filesystemwatcher.includesubdirectories(v = vs.110).aspx)幫助監視子文件夾而不是創建許多觀察者? – shahkalpesh
Dispose釋放非託管資源,但不釋放託管內存。 –
IncludeSubdirectories是我第一次嘗試,但是當有很多「移動」時,緩衝區不夠大,而且我在某處讀取更適合創建更小的觀察者。 –