Loading... 本节课我们来修复一下因为改成了多线程的解析和下载而出现一些 bug 的停止功能。 --- 很明显通过前几节课的修改,我们的解析的下载功能可以完美的使用多线程了,但是我们发现一个挺严重的问题,就是点击停止之后,事实上并没有立即停止,而是在运行了一部分子线程的任务之后才停止的。这一点,如果你秒速按下解析然后秒速按下停止按钮感受得最为明显,明明已经显示已停止了,但是还是会写出一大堆的表项来。下载功能也是如此。有种我让你停止了你却停不下来的感觉。 该如何修复这个问题呢?这节课我们就来讲解一下。 --- **多线程秒停止** 停止功能也需要更新换代。 **原因分析:** 因为我们原来的代码所停止的线程句柄是能启动子线程的父线程的,所以我们只能让父线程停止再开新的子线程,子线程依然在跑自己的。所以会造成不会秒停止的状况。 **技术要点:** 1. 针对这种情况,方法有许多,比如每开一个子线程就把子线程的句柄存入数组中,停止时批量停止所有的数组中的句柄等。我们这里采用程序集变量控制的方法,也比较简单方便。 2. 定义一个逻辑型程序集变量,集_是否停止,开始解析或者下载时设为假,按下停止改为真,则还在跑的子线程读取该变量就知道,哦,是时候该停止了,就实现了秒停止的功能。 具体的实现来看看我们的视频演示。 --- **课后作业** **课后作业:** 请大家根据视频所学,将停止功能修复好,能够正确支持我们新的多线程代码,实现秒停止。 --- **请务必完成作业之后再看下一课!** 下节课我们将讲解超级列表框与右键菜单的结合。 以下是我们的视频教程: **在线观看:** http://v.youku.com/v_show/id_XMjgwNDQ0MjU2NA==.html **高清源文件下载:** <div class="hideContent">该部分仅登录用户可见</div> 感谢大家的收看,我们下期再见! 最后修改:2021 年 08 月 09 日 © 允许规范转载 赞 赠人玫瑰,手留余香