C# OS-X上的Mono:文件系统监视程序处理泄漏?

C# OS-X上的Mono:文件系统监视程序处理泄漏?,c#,macos,mono,C#,Macos,Mono,我不完全确定这里发生了什么,但感觉有些不对劲 首先,我的代码: routeWatcher = new FileSystemWatcher(); routeWatcher.Path = Folder; routeWatcher.NotifyFilter = NotifyFilters.LastWrite | NotifyFilters.FileName | NotifyFilters.DirectoryName; routeWatcher.Filter = "*.*"; routeWatcher.

我不完全确定这里发生了什么,但感觉有些不对劲

首先,我的代码:

routeWatcher = new FileSystemWatcher();
routeWatcher.Path = Folder;
routeWatcher.NotifyFilter = NotifyFilters.LastWrite | NotifyFilters.FileName | NotifyFilters.DirectoryName;
routeWatcher.Filter = "*.*";
routeWatcher.Changed += onRouteFolderChanged;
routeWatcher.EnableRaisingEvents = true;
这里没什么特别有趣的,我只是订阅了通过folder(我的代码后面的一堆)提供的监控文件夹

这在Windows和Microsoft运行时上运行得很好,正如预期的那样,它会显示一个打开的句柄,即文件夹的句柄

另一方面,在OS-X下,当使用lsof-p或活动监视器时,我看到文件夹中的每个文件都有一个打开的句柄

然而,有些事情有点奇怪,因为我预计ulimit在一个包含256个文件的文件夹中会不高兴:

core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
file size               (blocks, -f) unlimited
max locked memory       (kbytes, -l) unlimited
max memory size         (kbytes, -m) unlimited
open files                      (-n) 256
pipe size            (512 bytes, -p) 1
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 266
virtual memory          (kbytes, -v) unlimited
这不会发生在一个包含631个文件的文件夹中,而且一切看起来都很好


我是误解了什么,还是遇到了某种Mono错误?

您使用的是哪种版本的Mono?直接从Mono获得的最新版本(4.8)。OS-X版本是el Capitan我们经常在Xamarin Studio/Visual Studio中看到文件处理泄漏,所以感谢您提出这个问题。这可能与我们看到的问题有关。是否存在Xamarin缺陷?我已经在Mac上禁用了我的文件系统监视程序,但我很高兴能找到问题的根源。。。这可能会引起一些兴趣。您使用的是什么版本的mono?直接从mono获得的最新版本(4.8)。OS-X版本是el Capitan我们经常在Xamarin Studio/Visual Studio中看到文件处理泄漏,所以感谢您提出这个问题。这可能与我们看到的问题有关。是否存在Xamarin缺陷?我已经在Mac上禁用了我的文件系统监视程序,但我很高兴能找到问题的根源。。。这可能会引起一些兴趣。