版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。

在有些时候需要主动终止某个线程,这时可以调用Thread.Abort方法。
例如以下的代码:

使用到的类:

Class clsSum2Public inputNum As IntegerPublic currentNum As IntegerPublic outputSum As Integer
End Class
主线程代码:Sub sample9()Dim maxNum As Integer = 20Dim sumNumber As New clsSum2sumNumber.inputNum = maxNumDim sample9_Thread As New Thread(AddressOf sample9_getSum)sample9_Thread.Start(sumNumber)Do Until sumNumber.currentNum >= 10Thread.Sleep(100)Loopsample9_Thread.Abort()Console.WriteLine("终止时运行到:{0},和为:{1}", sumNumber.currentNum, sumNumber.outputSum)Console.ReadKey()End SubSub sample9_getSum(ByVal obj As Object)Dim testSum As New clsSum2testSum = CType(obj, clsSum2)Dim sum As Integer = 0For i As Integer = 0 To testSum.inputNumsum += itestSum.currentNum = iThread.Sleep(100)NexttestSum.outputSum = sumEnd Sub

原本我们希望当子线程中循环求和计算到10时就停止并vb.net教程输出和值,但是实际常常得到的结果是:

或者

也就是说,根本没有运行到testSum.outputSum=sum,这就需要随时保存outputSum的值。
修改后的代码如下:

Sub sample9()Dim maxNum As Integer = 20Dim sumNumber As New clsSum2sumNumber.inputNum = maxNumDim sample9_Thread As New Thread(AddressOf sample9_getSum)sample9_Thread.Start(sumNumber)Do Until sumNumber.currentNum >= 10Thread.Sleep(100)Loopsample9_Thread.Abort()Console.WriteLine("终止时运行到:{0},和为:{1}", sumNumber.currentNum, sumNumber.outputSum)Console.ReadKey()
End SubSub sample9_getSum(ByVal obj As Object)Dim testSum As New clsSum2testSum = CType(obj, clsSum2)Dim sum As Integer = 0For i As Integer = 0 To testSum.inputNumsum += itestSum.currentNum = iThread.Sleep(100)testSum.outputSum = sumNext
End Sub

运行结果:

或者主线程大意了,放子线程多运行了一次循环:

这个例子说明了些问题:
1、线程其实并不好控制,需要多练习
2、将输出值放到了循环内部,每次循环都运行一次,实际占用了资源

在下一节将讲述如何更好的控制线程的终止。

vb.net 教程 6-14 终止线程的例子相关推荐

  1. android 如何终止线程

    今天,简单讲讲如何终止线程. Android终止线程的方法 线程对象属于一次性消耗品,一般线程执行完run方法之后,线程就正常结束了,线程结束之后就报废了,不能再次start,只能新建一个线程对象.但 ...

  2. java终止线程的三种方法

    有三种方法可以使终止线程. 1.  使用退出标志,使线程正常退出,也就是当run方法完成后线程终止. 2.  使用stop方法强行终止线程(这个方法不推荐使用,因为stop和suspend.resum ...

  3. 终止线程的三种方法(转)

    有三种方法可以使终止线程. 1.  使用退出标志,使线程正常退出,也就是当run方法完成后线程终止. 2.  使用stop方法强行终止线程(这个方法不推荐使用,因为stop和suspend.resum ...

  4. java thread exit方法_实例分析Java终止线程和stop()方法

    Java终止线程实例和stop()方法源码阅读 了解线程 概念 线程 是程序中的执行线程.Java 虚拟机允许应用程序并发地运行多个执行线程. 线程特点 拥有状态,表示线程的状态,同一时刻中,JVM中 ...

  5. vb.net 教程 20-4 库存管理系统3.14 出库单操作(FormStorageOutOrder)

    版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的.   关于<Visual Basic.Net 循序渐进>请到百度网盘下载,具体下载地址 ...

  6. 全国计算机二级vb 文库,全国计算机等级考试二级VB基础教程电子教案.ppt

    全国计算机等级考试二级VB基础教程电子教案.ppt ,Visual Basic程序设计基础教程 电子教案,制作人曾强聪,2004 年 4 月,课程内容,第 1 章,第 2 章,第 3 章,第 4 章, ...

  7. C#多线程之旅(七)——终止线程

    阅读目录 一.什么时候用Thread.Abort(); 二.Thread.Abort的用法 三.无法终止线程的情形 四.Catch块中抛出异常 五.Finally块中抛出异常 六.Abort调用的时间 ...

  8. 开课吧课堂:详解挂起、恢复和终止线程

    有时,线程的挂起是很有用的.例如,一个独立的线程可以用来显示当日的时间.如果用户不希望用时钟,线程被挂起.在任何情形下,挂起线程是很简单的,一旦挂起,重新启动线程也是一件简单的事. 挂起,终止和恢复线 ...

  9. vb程序设计教程第4版龚沛曾 实验答案解析

    这里只是个人对书中题目的解答,并不代表最优代码.仅供参考.有哪里错误或者不足的地方还望指出,Thanks♪(・ω・)ノ 以及 不要脸地 求探讨求点赞.嘿嘿 这里使用的是<vb程序设计教程(第四版 ...

  10. 【多线程编程学习笔记6】终止线程执行,千万别踩这个坑!

    申明:本学习笔记是在该教程的基础上结合自己的学习情况进行的总结,不是原创,想要看原版的请看C语言中文网的多线程编程(C语言+Linux),该网站有很多好的编程学习教程,尤其是关于C语言的. 在< ...

最新文章

  1. pandas基于元组列表(list of tuples)、列表词典(dictionary of lists)、词典列表(list of dictionaries)构建dataframe数据实战
  2. python自学多久可以找到工作-自学Python的高效方法,学Python多久能找到工作?
  3. STC89C52单片机 定时器
  4. groovy定义变量获取当前时间_IDEA不愧为神器,结合Groovy脚本,简直无敌!
  5. php ajax jquery 表单重复提交,jQuery如何防止Ajax重复提交
  6. 专访阿里巴巴量子实验室:最强量子电路模拟器“太章”到底强在哪?
  7. Javascript的websocket的使用方法
  8. MATLAB PDE工具箱电磁场仿真平行电容板及电偶极子详解
  9. 数据结构严蔚敏算法设计习题解答(逐渐更新)(更新于2020.11.20)
  10. 完美可用-DirectX修复工具增强版DirectX Repair
  11. pdg转换为pdf的方法
  12. TIMESTEN安装配置指南-中文版
  13. 干货,AES破解路程-生意参谋举例
  14. PR基础学习(四) 简单裁剪视频
  15. 解决Dev-C++ [Error] ‘for‘ loop initial declarations are only allowed in C99 or C11 mode
  16. 零基础入门学习HTML(下)
  17. Terminal Emulator for Android(安卓终端模拟器)的使用
  18. 剑指Offer:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法
  19. Google手机操作系统Android将100%开源
  20. html和cssb笔记

热门文章

  1. mcgs组态软件中字体如果从左到右变化_MCGS脚本程序 (2)
  2. Linux 部署 Nexus (下载、安装、使用)
  3. c语言pwm调制方式,pwm如何进行调制?3种pwm调制方式介绍
  4. ADMM算法的应用: 降低SDP算法复杂度
  5. 找东西背后的概率问题——From《思考的乐趣 Martix67数学笔记》
  6. 日常一记(11)--word公式输入任意矩阵
  7. python笔记记录神器 jupyter notebook
  8. 智能优化算法:蝙蝠算法-附代码
  9. 单片机测试雨滴传感器
  10. c语言包含数学库函数的头文件为,Cmath——C语言数学函数库