Foxtable(狐表)用户栏目专家坐堂 → [求助]表事件修改的文件在文件监视器中无效?


  共有3664人关注过本帖树形打印复制链接

主题:[求助]表事件修改的文件在文件监视器中无效?

帅哥哟,离线,有人找我吗?
xinqingok
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:54 积分:728 威望:0 精华:0 注册:2013/11/13 18:11:00
[求助]表事件修改的文件在文件监视器中无效?  发帖心情 Post By: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控件的刷新。
   
     求大神解答。

 回到顶部
帅哥哟,离线,有人找我吗?
xinqingok
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:54 积分:728 威望:0 精华:0 注册:2013/11/13 18:11:00
[求助]文件监视器事件给窗体控件赋值  发帖心情 Post By:2014/8/10 18:18:00 [显示全部帖子]

有点甜大哥,感谢您的热心测试!
我又重新对项目进行了测试,发现当监视目录为本地目录时,确实可正常运行并检测到文件变化。但是当监视目录为局域网的主机时,则不能检测到文件变化,很奇怪的是当我手动对局域网上的文件修改并保存后,又能检测到文件的变化了。不知其为何故呢?


 回到顶部
帅哥哟,离线,有人找我吗?
xinqingok
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:54 积分:728 威望:0 精华:0 注册:2013/11/13 18:11:00
  发帖心情 Post By: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文件,但是监视器没能触发。


图片点击可在新窗口打开查看


 回到顶部
帅哥哟,离线,有人找我吗?
xinqingok
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:54 积分:728 威望:0 精华:0 注册:2013/11/13 18:11:00
  发帖心情 Post By: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文件成功修改了,但是文件监视器的地方没有触发。。。我怕是工程文件的代码冲突,又重新新建了一个工程,同样的设置也是同样的情况,只有手动修改的文件才能被触发。但是换成是检测新生成文件后触发则能成功。。。


 回到顶部