【问题标题】:Mono FileSystemWatcher for Mac Opens all the files it watchesMono FileSystemWatcher for Mac 打开它监视的所有文件
【发布时间】:2017-09-27 04:08:57
【问题描述】:

我使用的是 Mono 4.6.2

当我创建 FileSystemWatcher 来监视 Mac 上的目录时,监视程序似乎正在打开该目录中的所有文件。我可以通过两种方式看到这一点:

  1. 当我打开一个大目录时,它会抛出“打开的文件太多”异常。

  2. 我可以看到我的程序的所有文件都列在“活动监视器->信息->打开文件和端口”下。

这就是我创建观察者的方式:

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

标签: c# macos mono


【解决方案1】:

看看这张票#bugzilla.xamarin

解决方法:每次迭代都运行 GC

//Execute:
mcs test.cs
ulimit -n 96
mono test.exe

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-24
    • 2013-01-18
    • 1970-01-01
    • 1970-01-01
    • 2014-08-31
    相关资源
    最近更新 更多