按键精灵如何使用子线程来让界面不卡顿
来源:网络收集 点击: 时间:2024-04-20先创建一个很简单的按键精灵界面,只要一个运行按钮

点击运行按钮之后的操作为延迟5秒(模拟耗时操作),调试运行后你会发现,点击按钮后界面会卡住,直到5秒后才恢复

首先要把我们的响应事件代码封装成sub代码块

响应事件改为点击按钮后开启一个子线程去执行耗时操作的代码块

我们需要注意用户多次点击的问题,要防止开启多个线程,这里我们使用一个全局变量来作为标记,当第一次进来后,就修改flag的值,把门关上,在执行完线程后,再修改flag的值,把门打开


为了让用户有更好的体验,我们可以再加一个线程运行中的提示,例如在界面上加一个label,注意属性设置为不可见

然后在代码中设置进度label的显示与隐藏,开启启动线程之前显示,在线程结束之前隐藏即可

为了让用户体验更好,我们打算让三个省略号动起来,来体现程序正在运行中,我们用一个do loop死循环来写一个跑马灯的sub,然后在线程中再开一个子线程去定时更新界面上的内容,在耗时操作完成之后,关闭跑马灯线程.

如果想使用更炫酷的提示控件,可以考虑使用大漠插件的foobar来实现.
源码:
Global Button1_thread_flag
Button1_thread_flag = 0
Event Form1.Button1.Click
If Button1_thread_flag = 0 Then
//关门
Button1_thread_flag = 1
//执行线程
BeginThread button_1_click
End If
End Event
Sub show_wait
Do
Form1.Label1.Caption = 脚本运行中.
Delay 1000
Form1.Label1.Caption = 脚本运行中..
Delay 1000
Form1.Label1.Caption = 脚本运行中...
Delay 1000
Loop
End Sub
Sub button_1_click
Form1.Label1.Visible = true
//开始跑马灯
id_1 = BeginThread (show_wait)
TracePrint 线程开始执行
Delay 10000
TracePrint 线程执行完毕
//停止跑马灯
StopThread id_1
Form1.Label1.Visible = False
//开门
Button1_thread_flag = 0
End Sub
版权声明:
1、本文系转载,版权归原作者所有,旨在传递信息,不代表看本站的观点和立场。
2、本站仅提供信息发布平台,不承担相关法律责任。
3、若侵犯您的版权或隐私,请联系本站管理员删除。
4、文章链接:http://www.1haoku.cn/art_553005.html