我有一个使用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是我第一次尝试,但是当有很多“移动”时,缓冲区不够大,而且我在某处读取更适合创建更小的观察者。 –