vba代码运行没反应(vba强制停止运行怎么办)
高高兴兴地写个Demo,却不知是谁的错
使用VB/VBA处理数据,当量较大时,是不是经常看见转圈圈,而干不了其他事情?如果点击鼠标,是不是会提醒你结束某某应用程序?如果文件未保存,是不是宁愿认怂,也不敢点结束?
有人说,数据量大了,VB/VBA就成了渣渣,是真心不太行耶。可是,有没有想过为什么呢?难道真的是因为数据量大,忙不过来吗?
这要从Windows系统说起,话说芯片从早期的4004芯片的740kHz的频率,到现在动辄N个GHz,为何在频率上一路高歌猛进呢?现代通用计算机,都是分时、多道多任务的,只有将时间切分得足够细小,才能达到多任务目的。
相信大家对闪电侠不陌生,中国武术里,也讲究天下武功唯快不破。只要你足够快,仿佛时间都可以停下来等你。这对操作系统也是一样的,硬件有细分时间的能力,系统也能捕捉到这种维度的变化,那么系统就可以把硬件资源在一定时段上调度给尽可能多的任务。
人类可感知时间颗粒,最小也是几十上百毫秒,这种粒度对于计算机而言,是一个可以做很多事情的时段了。反过来对人而言,这些很多串行的事情,却可以认为是在同时工作,所以,我们在电脑上一边可以聊天,一边可以看电视,而互不影响。
但是,如何分配这种维度的时间资源,却有不同的流派。有的流派认为,每个程序都是公平的,当然资源也得公平分配。而有的流派却认为,这世间本就不公平,任何事情总会有轻重缓急。
Windows显然属于后者,所以也叫抢占式系统。系统给每个线程都分配优先级,优先级高的将优先获得系统资源,反之就需要排队等待。为了兼顾公平,系统会整体权衡每个线程的优先级,会降低那些长期霸占资源的高优先级线程的优先级,这样其他低优先级线程,通过排队总会有机会的。
当我们使用循环处理大数据时,需要长期占用系统资源,这样系统就会不断地降低工作线程的优先级,当低于其他线程优先级时,当前工作线程就会被挂起等待。我们以为程序忙得不可开交,其实是因为被系统给挂起了。
这便是VB/VBA程序假死,不响应的最主要原因。欢迎关注BtOfficer,更多好料,不定期更新哦。