监控文件夹变化功能在虚拟机中失效

BUG反馈 · 1065 次浏览
之乎者也吧 创建于 2024-04-23 17:46

主机端和虚拟机端都安装了quicker。

想要实现虚拟机监控主机分享的共享文件夹,有变化时执行动作,事件触发和步骤里的文件系统监控步骤都失效了,监控的文件夹为共享文件夹,无论在主机端还是在虚拟机端执行更改、新建、删除文件操作,事件触发和文件系统监控都不作任何反应。

最后想到的实现方法是通过单独做一个动作,循环获取文件夹里的文件数量,通过数量变化来触发动作,目前为止动作的表现都很正常,就是比较麻烦因为要一直挂着一个无限循环。

不了解监控的实现方法,但通过动作去获取信息是实时且准确的。


回复内容
CL 2024-04-23 18:22
#1

我没有在官方文档中查到有支持这种共享文件夹的说明,可能不支持吧。

https://learn.microsoft.com/en-us/dotnet/api/system.io.filesystemwatcher?view=net-8.0&redirectedfrom=MSDN 

之乎者也吧 回复 CL 2024-04-23 18:35 :

应该就是这么回事了,共享文件夹的文件系统不属于常规或者权限不足什么的,我去问了问kimi:

`FileSystemWatcher` 类是 .NET Framework 中的一个类,它允许应用程序在文件或目录发生更改时得到通知。这个类可以监控本地驱动器上的文件和文件夹,但监控网络共享(共享文件夹)可能会受到一些限制。


以下是一些关于使用 `FileSystemWatcher` 监控共享文件夹的考虑因素:


1. **权限问题**:监控共享文件夹需要适当的权限。如果应用程序没有足够的权限去读取或监控网络共享上的文件系统,那么 `FileSystemWatcher` 可能无法正常工作。


2. **网络延迟和稳定性**:由于共享文件夹位于网络中,网络延迟和连接稳定性可能会影响 `FileSystemWatcher` 的性能和可靠性。


3. **文件系统类型**:`FileSystemWatcher` 可能无法监控不支持通知的文件系统。


4. **缓冲区溢出**:如果文件系统更改的速度超过了 `FileSystemWatcher` 处理这些更改的速度,可能会导致缓冲区溢出,从而错过一些更改通知。


5. **安全性**:出于安全考虑,某些网络环境可能会限制对共享文件夹的监控。


如果你确实需要监控共享文件夹,可以尝试以下方法:


- **确保权限**:确保应用程序有足够的权限来监控网络共享。

- **使用延迟**:通过设置 `InternalBufferSize` 属性来增加缓冲区的大小,这可能有助于处理大量文件系统更改。

- **错误处理**:实现适当的错误处理逻辑,以应对可能的网络问题或权限问题。


在实际应用中,你可能需要根据具体情况进行测试,以确定 `FileSystemWatcher` 是否能满足你监控共享文件夹的需求。如果 `FileSystemWatcher` 不能满足需求,可能需要考虑其他方法,如轮询检查文件变化或使用第三方库。

之乎者也吧 回复 CL 2024-04-23 18:39 :

其实就是有个脚本需要虚拟机跟着主机一起整天运行,通过推送也实现了,但是感觉这样过于频繁推送太浪费资源了,最好能本地化,于是就搞了这么个方法哈哈哈哈

CL 回复 之乎者也吧 2024-04-23 18:42 :

有http服务器模块,也可以看看是不是可以用

之乎者也吧 回复 CL 2024-04-23 19:00 :

好的老大,我研究研究

回复主贴