vb.net 教程 6-14 终止线程的例子
版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。
在有些时候需要主动终止某个线程,这时可以调用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 终止线程的例子相关推荐
- android 如何终止线程
今天,简单讲讲如何终止线程. Android终止线程的方法 线程对象属于一次性消耗品,一般线程执行完run方法之后,线程就正常结束了,线程结束之后就报废了,不能再次start,只能新建一个线程对象.但 ...
- java终止线程的三种方法
有三种方法可以使终止线程. 1. 使用退出标志,使线程正常退出,也就是当run方法完成后线程终止. 2. 使用stop方法强行终止线程(这个方法不推荐使用,因为stop和suspend.resum ...
- 终止线程的三种方法(转)
有三种方法可以使终止线程. 1. 使用退出标志,使线程正常退出,也就是当run方法完成后线程终止. 2. 使用stop方法强行终止线程(这个方法不推荐使用,因为stop和suspend.resum ...
- java thread exit方法_实例分析Java终止线程和stop()方法
Java终止线程实例和stop()方法源码阅读 了解线程 概念 线程 是程序中的执行线程.Java 虚拟机允许应用程序并发地运行多个执行线程. 线程特点 拥有状态,表示线程的状态,同一时刻中,JVM中 ...
- vb.net 教程 20-4 库存管理系统3.14 出库单操作(FormStorageOutOrder)
版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的. 关于<Visual Basic.Net 循序渐进>请到百度网盘下载,具体下载地址 ...
- 全国计算机二级vb 文库,全国计算机等级考试二级VB基础教程电子教案.ppt
全国计算机等级考试二级VB基础教程电子教案.ppt ,Visual Basic程序设计基础教程 电子教案,制作人曾强聪,2004 年 4 月,课程内容,第 1 章,第 2 章,第 3 章,第 4 章, ...
- C#多线程之旅(七)——终止线程
阅读目录 一.什么时候用Thread.Abort(); 二.Thread.Abort的用法 三.无法终止线程的情形 四.Catch块中抛出异常 五.Finally块中抛出异常 六.Abort调用的时间 ...
- 开课吧课堂:详解挂起、恢复和终止线程
有时,线程的挂起是很有用的.例如,一个独立的线程可以用来显示当日的时间.如果用户不希望用时钟,线程被挂起.在任何情形下,挂起线程是很简单的,一旦挂起,重新启动线程也是一件简单的事. 挂起,终止和恢复线 ...
- vb程序设计教程第4版龚沛曾 实验答案解析
这里只是个人对书中题目的解答,并不代表最优代码.仅供参考.有哪里错误或者不足的地方还望指出,Thanks♪(・ω・)ノ 以及 不要脸地 求探讨求点赞.嘿嘿 这里使用的是<vb程序设计教程(第四版 ...
- 【多线程编程学习笔记6】终止线程执行,千万别踩这个坑!
申明:本学习笔记是在该教程的基础上结合自己的学习情况进行的总结,不是原创,想要看原版的请看C语言中文网的多线程编程(C语言+Linux),该网站有很多好的编程学习教程,尤其是关于C语言的. 在< ...
最新文章
- pandas基于元组列表(list of tuples)、列表词典(dictionary of lists)、词典列表(list of dictionaries)构建dataframe数据实战
- python自学多久可以找到工作-自学Python的高效方法,学Python多久能找到工作?
- STC89C52单片机 定时器
- groovy定义变量获取当前时间_IDEA不愧为神器,结合Groovy脚本,简直无敌!
- php ajax jquery 表单重复提交,jQuery如何防止Ajax重复提交
- 专访阿里巴巴量子实验室:最强量子电路模拟器“太章”到底强在哪?
- Javascript的websocket的使用方法
- MATLAB PDE工具箱电磁场仿真平行电容板及电偶极子详解
- 数据结构严蔚敏算法设计习题解答(逐渐更新)(更新于2020.11.20)
- 完美可用-DirectX修复工具增强版DirectX Repair
- pdg转换为pdf的方法
- TIMESTEN安装配置指南-中文版
- 干货,AES破解路程-生意参谋举例
- PR基础学习(四) 简单裁剪视频
- 解决Dev-C++ [Error] ‘for‘ loop initial declarations are only allowed in C99 or C11 mode
- 零基础入门学习HTML(下)
- Terminal Emulator for Android(安卓终端模拟器)的使用
- 剑指Offer:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法
- Google手机操作系统Android将100%开源
- html和cssb笔记
热门文章
- mcgs组态软件中字体如果从左到右变化_MCGS脚本程序 (2)
- Linux 部署 Nexus (下载、安装、使用)
- c语言pwm调制方式,pwm如何进行调制?3种pwm调制方式介绍
- ADMM算法的应用: 降低SDP算法复杂度
- 找东西背后的概率问题——From《思考的乐趣 Martix67数学笔记》
- 日常一记(11)--word公式输入任意矩阵
- python笔记记录神器 jupyter notebook
- 智能优化算法:蝙蝠算法-附代码
- 单片机测试雨滴传感器
- c语言包含数学库函数的头文件为,Cmath——C语言数学函数库