按键精灵如何使用子线程来让界面不卡顿

2025-11-27 07:35:02

1、先创建一个很简单的按键精灵界面,只要一个运行按钮

按键精灵如何使用子线程来让界面不卡顿

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

按键精灵如何使用子线程来让界面不卡顿

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

按键精灵如何使用子线程来让界面不卡顿

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

按键精灵如何使用子线程来让界面不卡顿

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

按键精灵如何使用子线程来让界面不卡顿

按键精灵如何使用子线程来让界面不卡顿

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

按键精灵如何使用子线程来让界面不卡顿

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

按键精灵如何使用子线程来让界面不卡顿

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

按键精灵如何使用子线程来让界面不卡顿

9、如果想使用更炫酷的提示控截狠劣件,可以考虑使用大漠插件的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

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢