马上加入TC
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
等待, 这个自带函数, 我个人理解就是api SleepEx函数, 作用是让当前线程等待指定时间, 单位是毫秒,
首先, 关于阻塞和不阻塞, 对软件执行功能有没有影响, 是看你将它使用在哪里, 如果使用在UI线程里, 那就要注意!
比如下面这个写法, 这是错误写法,
当延时的时间很长, 还没结束时, 去操作界面, 比如点一下窗口标题, 就会出现"未响应"三个字,
留意延时写在哪里? 是写在 按钮0_点击() 这个事件里, 按钮等一切控件都属于父窗口, 整个窗口要处理的消息很多,
这一切事件执行都基于同一个"线程", 通常称为UI线程, 较长的延时把UI线程直接堵死, 然后界面就未响应, 直到延时完毕, 界面才会恢复.
比如下面这个写法, 这是正确写法,
上图很明显命令是同一个, 一模一样, 就是延时10秒, 那么这个为什么就不会阻塞UI? 有个细节, 那就是延时是用在另一个函数里, 而这函数用线程来启动的,
也就是说, 它的执行, 不属于UI线程管了, 已经是独立的, 所以, 没问题.
但是, 有时候, 不需要线程, 就想直接运行, 而又不要阻塞UI, 有没有方法? 答, 是有的, 这就要留意第二个参数, 通常被省略不填, 这是正确写法,
只需要很简单的参数二里写个"假", 就是不阻塞模式了. 想要省事的, 可以直接全用参数二为假的写法, 等待(200, 假)
|