广告合作
  • 今日头条

    今日头条

  • 百度一下

    百度一下,你就知道

  • 新浪网

    新浪网 - 提供新闻线索,重大新闻爆料

  • 搜狐

    搜狐

  • 豆瓣

    豆瓣

  • 百度贴吧

    百度贴吧——全球领先的中文社区

  • 首页 尚未审核订阅工具 订阅

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

    来源:网络收集  点击:  时间:2024-04-20
    【导读】:
    按键精灵除了可以直接运行脚本之外,还可以写脚本界面,但是在写脚本的时候也要考虑到用户使用时的舒适度,例如点击按钮之后的卡顿问题方法/步骤1/9分步阅读

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

    2/9

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

    3/9

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

    4/9

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

    5/9

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

    6/9

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

    7/9

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

    8/9

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

    9/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

    本文关键词:

    版权声明:

    1、本文系转载,版权归原作者所有,旨在传递信息,不代表看本站的观点和立场。

    2、本站仅提供信息发布平台,不承担相关法律责任。

    3、若侵犯您的版权或隐私,请联系本站管理员删除。

    4、文章链接:http://www.1haoku.cn/art_553005.html

    相关资讯

    ©2019-2020 http://www.1haoku.cn/ 国ICP备20009186号05-06 03:40:28  耗时:0.024
    0.0238s