C#线程阻塞、中断与终止

阻塞、中断:

在一个线程中调用Thread.Sleep方法会导致该线程立即被阻塞,阻塞的时间长度等于传递给Thread.Sleep方法的数值(单位为毫秒)。

如果调用Thread.Sleep方法时传入的参数为Timeout.Infinit,那么当前线程将永远休眠,直到被中断或者终止为止。

在另一个线程中对被阻塞的线程调用Thread对象的Interrupt方法,就会在被阻塞的线程中引发ThreadInterruptedException异常,将中断被阻塞的线程,从而使该线程摆脱阻塞。应该在被阻塞的线程中捕获ThreadInterruptedException异常,并执行适当的操作以继续运行线程。如果线程忽略该异常,则运行库将捕获该异常并停止该线程。

     终止线程
Thread类的Abort方法用于永久地停止托管线程。调用Abort时,公共语言运行时在目标线程中引发ThreadAbortException,目标线程可捕捉此异常。线程一旦被终止,它将无法重新启动。

Abort方法不直接导致线程终止,因为目标线程可捕捉ThreadAbortException,并在finally块中执行任意数量的代码。线程的清理代码必须在catch子句或finally子句中,因为系统在finally子句的结尾处再次引发ThreadAbortException异常,如果没有finally子句,则在catch子句的结尾处再次引发该异常。通过调用Thread类的ResetAbort方法,可以防止系统再次引发该异常。但是,只有在你自己的代码中引发ThreadAbortException异常时,才应当这样做

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值