一般而言,如果您想终止一个线程,您可以使用System.Threading.Thread类的Abort方法. 例如:Dim worker As ThreadStart = New ThreadStart(AddressOf workerthreadmethod)Dim t As Thread = New Thread(worker)      t.Start()      MessageBox.Show("Wait for a while for the thread to start.")      MessageBox.Show(t.ThreadState.ToString())      t.Abort()      MessageBox.Show(t.ThreadState.ToString())      t.Join()      MessageBox.Show(t.ThreadState.ToString()) 

  当然,在调用Abort方法后,线程并不是立刻终止,要等线程的所有finally快中的代码完成后才会完全终止. 所以在主线程中可以用Join方法来同步,当线程还未完全终止时,t.Join()将处于等待,直到t线程完全结束后再继续执行后面的语句。  Abort方法是会导致线程跳出一个异常错误的,你需要在代码中捕获该异常。下面是一个比较完整的VB.NET线程例子:

Imports SystemImports System.ThreadingPublic Class MyTestApp

Public Shared Sub Main()Dim t As New Thread(New ThreadStart(AddressOf MyThreadMethod))

'Start the thread      t.Start()MsgBox("Are you ready to kill the thread?")

'Kill the child thread and this will cause the thread raise an exception      t.Abort()' Wait for the thread to exit      t.Join()MsgBox("The secondary thread has terminated.")

End SubShared Sub MyThreadMethod()Dim i As IntegerTryDo While True            Thread.CurrentThread.Sleep(1000)            Console.WriteLine("This is the secondary thread running.")LoopCatch e As ThreadAbortExceptionMsgBox("This thread is going to be terminated by the Abort method in the Main function")End TryEnd SubEnd Class

  ************************************************************************************************

    Thread.Abort()方法用来永久销毁一个线程,而且将抛出ThreadAbortException异常。使终结的线程可以捕获到异常但是很难控制恢复,仅有的办法是调用Thread.ResetAbort()来取消刚才的调用,而且只有当这个异常是由于被调用线程引起的异常。因此,A线程可以正确的使用Thread.Abort()方法作用于B线程,但是B线程却不能调用Thread.ResetAbort()来取消Thread.Abort()操作。

转载于:https://www.cnblogs.com/st2012/archive/2012/04/06/2435427.html

vb.net中如何结束一个线程相关推荐

  1. Delphi中强制结束一个进程

    强制结束一个进程的 API 为 TerminateProcess BOOL TerminateProcess( HANDLE hProcess, // 进程句柄 UINT uExitCode // 退 ...

  2. 浅析Nginx中各种锁实现丨Nginx中手写一个线程池丨Nginx中反向代理,正向代理,负载均衡,静态web服务丨C++后端开发

    学会nginx中锁的使用,让你对锁豁然开朗 1. 反向代理,正向代理,负载均衡,静态web服务 2. nginx 中 accept 锁实现 自旋锁 信号量 3. nginx 中 线程池 实现以及详解虚 ...

  3. Linux中强制结束一个进程的终极方法和其他常用命令

    Linux中强制结束一个进程的终极方法和其他常用命令 1.查进程 ps命令查找与进程相关的PID号: ps a 显示现行终端机下的所有程序,包括其他用户的程序. ps -A 显示所有程序. ps c ...

  4. iOS中安全结束 子线程 的方法

    一个典型的结束子线程的方法:   用 isFinished 检测子线程是否被完全kill掉 -(IBAction)btnBack:(id)sender {//释放内存 仅仅remove 并不会触发内存 ...

  5. java如何让线程阻塞_Java中如何使一个线程进入阻塞态?

    按我的理解,当一个线程需要获取的锁被另一个线程占用时,将进入阻塞态.但实际好像不是这样的,下面是我的代码. 在run方法中会调用MyBlock的isBlocked方法,该方法添加了synchroniz ...

  6. WinForm中新开一个线程操作窗体上的控件(跨线程操作控件)GOOD

    http://www.cnblogs.com/joey0210/p/3450379.html 最近在做一个winform的小软件(抢票的...).登录窗体要从远程web页面获取一些数据,为了不阻塞登录 ...

  7. android 双线程等待,在Java/Android中启动另一个线程之前如何等待线程完成?

    在回答您的问题之前,我强烈建议您查看 ExecutorServices,例如 ThreadPoolExecutor. 现在回答你的问题: 如果要等待上一个线程完成,在开始下一步之前,您可以在之间添加t ...

  8. java判断线程结束_java中如何判断一个线程是否结束

    我们可以通过调用thread.Join()方法,把要判断的线程加入到当前线程中,这样可以将两个交替执行的线程合并为顺序执行的线程.如果顺利执行,则说明该线程未结束. (视频教程推荐:java视频) 比 ...

  9. Linux中强制结束一个进程的终极方法

    在 Linux Ubuntu 服务器上用 dnx 基于 Kestrel 成功运行一个 ASP.NET 5 站点后,怎么也无无法退出. 运行的命令如下: /data/git/dnx/artifacts/ ...

  10. python中如何中止一个线程

    转载自:http://www.708luo.com/?p=30 class KillableThread(threading.Thread):"""A subclass ...

最新文章

  1. 【刷题】BZOJ 4516 [Sdoi2016]生成魔咒
  2. 【转】vfork 和 fork的区别
  3. 第十六届智能车竞赛赛道电磁线圈铺设方法
  4. python入门需要多久-零基础小白多久能学会python
  5. 用特征迭代次数区分minst数据集的0和1
  6. Keil生成汇编文件、bin文件
  7. vue-cli工程目录结构及相关文件说明
  8. mysql中存储日期的类型_选择合适的 MySQL 日期时间类型来存储你的时间
  9. [Leedcode][JAVA][第42题][动态规划][双指针][栈]
  10. Linux环境下查看网络性能的基本命令
  11. 贺利坚老师汇编课程48笔记:转移指令如jcxz
  12. 基于raphael 的图形变化
  13. Python编程从入门到实践(基础入门)
  14. VB.NET异形窗体
  15. linux更新字体库失败,wps for linux 字体库缺失问题的解决办法
  16. 傲腾内存 可以用ghost系统_英特尔傲腾是什么?让你秒懂英特尔傲腾技术
  17. 解决git文件夹图标消失
  18. 程序员不要和陌生人说话——漫谈一些有趣的架构原则
  19. java 新词发现,Java新词发现算法码源之使用
  20. 杭州云栖大会“弹性计算用户实践专场”等你来

热门文章

  1. MATLAB通信仿真实例1:无噪声信道下DSB-SC调制解调器
  2. Hadoop2.4.1(QJM HA)+HBASE0.98 双MASTER问题分析
  3. Raki的读paper小记:MEMORY REPLAY WITH DATA COMPRESSION FOR CONTINUAL LEARNING
  4. 计算机主机光驱弹不出来怎么办,win7系统电脑按下光驱按钮托盘就是弹不出来怎么办...
  5. 简单的关闭iframe窗口和获取父页面元素
  6. selenium-绕过登录
  7. 微信小程序 this.data与this.setData
  8. 20145235李涛《网络对抗》Exp8 Web基础
  9. iOS学习之单例模式
  10. 【原创】Mapped Statements collection does not contain value for DaoImpl.method