我正在尝试编写一个执行一些读取/处理/写入操作的程序。
当我给我的程序一个本地路径时,一切都运行正常,但我面临一个不寻常的问题:当我通过局域网处理文件时,内存使用量巨大。
如果文件路径类似于“ //network_address/folder/*.ext
”,则程序将使用大约 4G RAM(而当路径类似于“ c:/folder/*.ext
”时,则使用 500 - 1G)
我使用进程监视器查看发生了什么,并注意到“ c:\windows\csc\v2.0.6\namespace
”文件夹中持续读取失败 - 我甚至不知道这个文件夹的存在。研究后,我发现它用于与网络服务器同步文件,可能用于离线查看网络文件。
上述故障恰好发生在写入文件过程开始之前(而不是读取之前),命名空间文件夹未被使用,我没有同步任何内容,并且对网络驱动器的实际写入成功。
我没有设置任何同步文件夹的选项......(而且我也不想)
当我拥有该文件夹的所有权后,内存使用量就下降了(尽管在进程监视器中仍然出现读取错误)。
所以......我认为我的问题是我一直在尝试做一些我不被允许做的事情,并且在我尝试做我不被允许的事情时使用大量内存来保存数据,直到我失败并最终将数据放在它所属的位置......
解决办法是:避免做那些我不被允许做的事情,对吗?
有没有办法(最好是我可以在代码中运行的命令行,或者我可以修改的注册表项)可以阻止我的程序同步文件(如果发生了这种情况)或在读取网络驱动器时使用该命名空间文件夹?
我怎样才能防止 Windows 在我背后同步文件,并将文件直接写入网络文件夹?
答案1
你解决了这个问题吗?尝试禁用共享中的脱机文件:
- 右键单击共享
- 转到共享选项卡
- 点击高级共享按钮
- 单击缓存按钮
- 选择“共享文件夹中没有文件或程序可离线使用。”
- 单击“确定”关闭“离线设置”弹出窗口
- 单击“确定”关闭“高级共享”弹出窗口
- 单击“关闭”关闭共享的属性框
您可以从客户端 PC 尝试的另一件事是,如果是 Win7/Vista,则禁用脱机文件服务。
让我们知道结果如何。
答案2
10 年过去了,这仍然是一个问题!但令我惊讶的是,我实际上从微软那里得到了一个“修复”。我在 Windows 10 AVD 主机上遇到了这个问题,解决方案如下:
虽然未启用离线文件,但服务仍在运行 - 这显然导致了此问题(?)
因此,您需要做的是在有问题的计算机上运行 gpedit.msc,然后转到本地计算机策略 -> 管理模板 -> 网络 -> 脱机文件 -> “允许或禁止使用脱机文件功能”,将其设置为已禁用(不要将其保留为“未配置”)。重新启动。
问题解决了!(CscService 现已停止并阻止以“幽灵模式”运行)。