以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]如何实现:当系统空闲时自动每隔五钟自动同步一下表?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=130979)

--  作者:whynotwxg
--  发布时间:2019/2/13 15:26:00
--  [求助]如何实现:当系统空闲时自动每隔五钟自动同步一下表?

我的项目中表格数量不多,有两张表最常用,大约有十几个人在时刻打开这两张表。我已经设置了编辑后自动保存。添加了两个按钮,点击可以同步更新这两张表。但为了更省事,想让这两张表在系统空闲时每隔几分钟就自动同步一次。请问应怎么写代码?

先谢谢大神们!

 

 

SystemIdle


--  作者:whynotwxg
--  发布时间:2019/2/13 15:31:00
--  

If LastInputTickCount > 300000 Then
    Tables("表名").Load()

End
If

 

按上面这样写可以吗?


--  作者:有点甜
--  发布时间:2019/2/13 15:41:00
--  

1、你2楼那样写没问题;

 

2、但是,LastInputTickCount,是你电脑没有操作的时间,也就是鼠标、键盘等都没有用过的时候的空闲时间。

 

如果你在电脑操作其它东西,上网、玩游戏等,没有操作foxtable,也希望这个时候也同步,参考

 

http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=79606&skin=0

 


--  作者:whynotwxg
--  发布时间:2019/2/13 17:08:00
--  
谢谢有点甜老师。我按照您的提示修成了以下代码:

static ts As Date = Date.Now
If Windows.Forms.Form.ActiveForm IsNot Nothing Then
    ts = Date.now
Else
    Dim sp As TimeSpan = Date.now - ts
    If sp.TotalSeconds > 30 Then
        DataTables("表名").Load()
        ts = Date.now
    End If
End If

经过测试,效果良好。然后我又把上次跟您学习的另一些代码(表格同步后,返回到原来的显示位置)加进去。这样运行起来,就每过几分钟同步一次,因为数据量也不太大,所以感觉不到系统有负担。实际效果相当于某些在线版的实时同步表格了,所以非常理想。

感谢您!

--  作者:yolala
--  发布时间:2022/11/27 18:40:00
--  
学习了