以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- [求助]表事件修改的文件在文件监视器中无效? (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=55048) |
-- 作者:xinqingok -- 发布时间:2014/8/9 16:53:00 -- [求助]表事件修改的文件在文件监视器中无效? 表事件的datacolchanged: FileSys.WriteAllText(ProjectPath & "日志\\操作记录.txt" , s , False, Encoding.UTF8) 通过表事件的datacolchanged将修改过程通过以上代码记录到“操作记录.txt”中,窗体A中的B控件读取这个txt文件来显示操作的记录。为了实现记录的实时显示,之前我是在A窗体中打开计时器每隔10秒读一次“操作记录.txt”并写入B控件,后来发现这样很浪费资源,因为“操作记录.txt”并不是一直在改变的,只是当有操作的时候这个文件才会变才有去更新它的意义。 现在我想通过文件监视器来实现这个功能,通过文件监视器监视这个名为“日志”的目录,当“操作记录.txt”发生改变时读取它写到A窗体B控件中,但是发现当人为打开“操作记录.txt”并手动修改保存时,可以正确在B控件中刷新,但是通过表事件做出的更改并不能触发B控件的刷新。 求大神解答。 |
-- 作者:有点甜 -- 发布时间:2014/8/10 9:38:00 -- 测试没有发现你这种问题,绝对是可以检测到修改的内容的。 |
-- 作者:xinqingok -- 发布时间:2014/8/10 18:18:00 -- [求助]文件监视器事件给窗体控件赋值 有点甜大哥,感谢您的热心测试! 我又重新对项目进行了测试,发现当监视目录为本地目录时,确实可正常运行并检测到文件变化。但是当监视目录为局域网的主机时,则不能检测到文件变化,很奇怪的是当我手动对局域网上的文件修改并保存后,又能检测到文件的变化了。不知其为何故呢? |
-- 作者:有点甜 -- 发布时间:2014/8/10 19:24:00 -- 测试局域网同样没有问题。
1、你的项目文件不能放在共享文件夹内,必须每台电脑都拷贝一份;
2、检测的路径要设置对,比如 \\\\helen\\共享文件夹
然后这样测试
FileSys.WriteAllText("\\\\helen\\共享文件夹\\操作记录.txt" , "tedfsdfdfst" , False, Encoding.UTF8) |
-- 作者:xinqingok -- 发布时间:2014/8/10 20:27:00 -- 以下是引用有点甜在2014-8-10 19:24:00的发言: 测试局域网同样没有问题。
1、你的项目文件不能放在共享文件夹内,必须每台电脑都拷贝一份;
2、检测的路径要设置对,比如 \\\\helen\\共享文件夹
然后这样测试
FileSys.WriteAllText("\\\\helen\\共享文件夹\\操作记录.txt" , "tedfsdfdfst" , False, Encoding.UTF8) 1,项目文件在本地。 2,检测路径也没错,因为我手动修改后被正确识别了。WriteAllText也没有错,因为我手动打开 操作记录.txt 看了,所有操作都被正确记录了。 问题是,表事件已经成功更改了txt文件,但是监视器没能触发。 |
-- 作者:有点甜 -- 发布时间:2014/8/10 20:33:00 -- 首先一点,不可能不触发,剩下的自己去排查。
1、直接在命令窗口执行,红色代码改成你的共享文件夹的目录,内容你要动态的去改一下,反复测试 FileSys.WriteAllText("\\\\helen\\共享文件夹\\操作记录.txt" , "tedfsdfdfst" , False, Encoding.UTF8)
2、如果1可以出发,看你代码跟1有什么不同 |
-- 作者:xinqingok -- 发布时间:2014/8/10 20:56:00 -- 以下是引用有点甜在2014-8-10 20:33:00的发言: 首先一点,不可能不触发,剩下的自己去排查。
1、直接在命令窗口执行,红色代码改成你的共享文件夹的目录,内容你要动态的去改一下,反复测试 FileSys.WriteAllText("\\\\helen\\共享文件夹\\操作记录.txt" , "tedfsdfdfst" , False, Encoding.UTF8)
2、如果1可以出发,看你代码跟1有什么不同 已经测试,在命令窗口执行后txt文件成功修改了,但是文件监视器的地方没有触发。。。我怕是工程文件的代码冲突,又重新新建了一个工程,同样的设置也是同样的情况,只有手动修改的文件才能被触发。但是换成是检测新生成文件后触发则能成功。。。 |
-- 作者:有点甜 -- 发布时间:2014/8/10 21:00:00 -- 加QQ,发远程过来看看。2450314695 [此贴子已经被作者于2014-8-10 21:00:38编辑过]
|
-- 作者:有点甜 -- 发布时间:2014/8/10 22:43:00 -- 不知为何,测试就是不检测修改,最后只能是删除再新增。 |