【发布时间】:2017-09-27 04:08:57
【问题描述】:
我使用的是 Mono 4.6.2
当我创建 FileSystemWatcher 来监视 Mac 上的目录时,监视程序似乎正在打开该目录中的所有文件。我可以通过两种方式看到这一点:
当我打开一个大目录时,它会抛出“打开的文件太多”异常。
我可以看到我的程序的所有文件都列在“活动监视器->信息->打开文件和端口”下。
这就是我创建观察者的方式:
var watcher = new FileSystemWatcher {
Path = path.LocalPath,
IncludeSubdirectories = true
};
watcher.NotifyFilter = NotifyFilters.CreationTime | NotifyFilters.FileName |
NotifyFilters.DirectoryName | NotifyFilters.LastWrite;
watcher.Changed += FileSystemWatcher_Changed;
watcher.Renamed += FileSystemWatcher_Renamed;
是这样设计的吗?这个问题有解决方法吗?
【问题讨论】:
-
似乎是一个已知问题:see this about DNX。除了
export MONO_MANAGED_WATCHER disabled,我没有看到任何解决方法,它基本上关闭了观看文件的能力。有些人很幸运export MONO_MANAGED_WATCHER enabled,但报告说 CPU 使用率高且响应时间慢。如果您查看the FileSystemWatcher source code,您会看到它如何使用MONO_MANAGED_WATCHER。