特殊的Exception ThreadAbortException

控制一个线程的执行状态一般有两种方法:

  1.定义一个执行状态或者一个执行ID;

  2.ThreadAbort

个人比较习惯用第一种,这样可以保证退出时线程是执行完毕的,能保证业务的完整,几乎不用ThreadAbort。

今天改公司的调度器需要用到ThreadAbort,要在Abort之后能通知到被调度者,因此打算是在ThreadAbortException异常中通知。但实现一大半之后才发现,要是被调度者自行catch了ThreadAbortException我就拿不到了,这样我的Abort处理流程是无法触发的,因为时间紧,所以先完成了这个不完美的实现。

为了测试问题,我也实现了一个自行catch ThreadAbortException,结果我惊奇的发现,不管有没有自行catch ThreadAbortException,外层总是能收到ThreadAbortException。

查了查MSDN,才发现ThreadAbortException是一个特殊处理的Exception,会在catch块的结尾处将自动被再次引发。不知道MS是不是为了解决这样的问题而引入这个机制。

 

附上MSDN连接:

http://msdn.microsoft.com/zh-cn/library/system.threading.threadabortexception.aspx

转载于:https://www.cnblogs.com/vanjoge/archive/2013/04/12/3017147.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值