以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- LIKE疑惑与timerclick带来的卡顿 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=135265) |
-- 作者:douglas738888 -- 发布时间:2019/5/22 11:20:00 -- LIKE疑惑与timerclick带来的卡顿 请教老师,几个问题请教 问题1 :下面标注颜色的代码,都能实现同样的功能,哪个执行效率高,并且统计负荷小,窗口TimerClick中使用LIKE是否会影响打开项目和窗口的速度?
问题2: 窗口里的TimerClick中,写入了如上代码类型,约有20个,计时器启用间隔为5000,窗口中有一个表设置了如下代码,鼠标在表中移动时,每隔5秒就卡顿一次,卡顿时间约3秒,如此反复很难受,把问题1的代码在计划管理中,不使用窗口的TimerClick,也没有改善;同时类似的问题也会影响到窗口中的菜单按钮和Button按钮使用(鼠标经过按钮遇到TimerClick间隔卡顿时,按钮背景不会变色也不会被选取),怎样能改善这个问题? 类似的问题,论坛中也有人提到过。 DrawCell: If e.Table.Name = vars("t") And e.Row.Index = vars("r") Then MouseEnterCell: vars("t") = e.Table.Name MouseLeaveCell: vars("t") = Nothing [此贴子已经被作者于2019/5/22 11:20:31编辑过]
|
-- 作者:有点甜 -- 发布时间:2019/5/22 11:23:00 -- 1、没有多少区别。忽略不计。
2、SQLCompute每执行一次,耗时0.5秒,请确认你执行了多少个耗时代码。
3、如果需要执行,用异步函数处理一下试试 http://www.foxtable.com/mobilehelp/scr/3269.htm |
-- 作者:douglas738888 -- 发布时间:2019/5/22 15:56:00 -- 谢谢老师的指导,异步编程,看了大概有个了解了,
有些不明白,是否是:上述在Timerclick中的代码在内部函数中建立一个函数把代码写过去要用到Sleep,每一个统计值的代码段都要写一次,类似的代码再在Timerclick中写一次,不知我的理解对吗?请老师就上面的实例,指导写个函数的代码,我参考参考学习学习,谢谢! [此贴子已经被作者于2019/5/22 15:56:52编辑过]
|
-- 作者:有点甜 -- 发布时间:2019/5/22 16:41:00 -- 把你timertick事件的代码,写到函数里面,然后在timertick事件,异步调用函数,即可。 |
-- 作者:douglas738888 -- 发布时间:2019/5/23 10:48:00 -- 老师我这样写的,不知对吗? 感觉没有明显改善,依然卡顿,卡顿时间约2秒
这样的代码段,我数了一下有27个,因为要统计显示多个表的数据,只能一个一个Label来呈现出来,这样的话控件比较多 函数Task: Dim Count019 As Double
timerclick: Dim pbx06 As WinForm.PictureBox = Forms("主页").Controls("PictureBox06") Functions.AsyncExecute("Task") [此贴子已经被作者于2019/5/23 10:53:29编辑过]
|
-- 作者:有点蓝 -- 发布时间:2019/5/23 11:57:00 -- 操作控件要异步加同步处理:http://www.foxtable.com/mobilehelp/scr/3274.htm |
-- 作者:有点甜 -- 发布时间:2019/5/23 15:16:00 -- 把timerclick事件的整段代码,都写到函数里面去处理。
如果报错,再加上同步函数 http://www.foxtable.com/mobilehelp/scr/3274.htm
|
-- 作者:douglas738888 -- 发布时间:2019/6/10 15:57:00 -- 请教老师,我把TimerTick的全部代码都写到函数里面了,28个代码段,每个代码代码段都设了不同的 Sleep(20) Return count1
TimerTick 里只写了这句代码 Functions.AsyncExecute("Task")
打开窗口正常,不同的统计值都正常,也不会出现时间间隔的断点影响,但是在本窗口Label点击打开另外窗口时(加载SQLTable)时报错,无效操作,连接被关闭........,无法加载表到窗口
这是什么问题,也不知道如何设置这样的同步函数,看了帮助也没弄懂,是否是异步函数执行时,其他主线程是被禁止使用的(如果不使用异步函数,加载表是正常的) |
-- 作者:有点甜 -- 发布时间:2019/6/10 16:12:00 -- 点击打开另外的窗口,执行了什么代码?在哪里执行?
做一个对应的项目发上来测试。
|
-- 作者:douglas738888 -- 发布时间:2019/6/10 16:19:00 -- 5楼的代码 Dim st019 As WinForm.Label = Forms("主页").Controls("Lab16") Dim Count019 As Double
比如:当st019.Text = 1 有文件提示时,点击此控件 此控件的Click:
Forms("窗口2").Open |