停止线程的办法
黑娃 2014-10-31 08:44:17 一直不太清楚用什么办法终止线程是比较好的方式,现在归纳如下:
1、设置volatile bool变量,线程在循环条件中判定,其他线程可以通过改变这个状态达到终止线程的目的,不过中止过程会稍稍有点延迟,至少要等到其执行到一次循环结束的点。但这样做能保证要终止的线程释放该释放的非托管变量,很安全,也是我认为最好的中止线程的办法。但它的缺点是:如果到达循环结束之前sleep了,就可能等太久
2、abort(),这个方法并不被推荐,但若遇到上面说的情况,除此之外还能怎样?关于这个abort,虽然说MSDN说捉了一个abort的exception就是了,可是实际情况却不是那么乐观,比如线程正在阻塞访问串口资源,还得先close那个serialPort,同理用interrupt并捕捉了其异常也是不行的,必须释放serialPort,可是如果我不愿意,有其他线程还要用serialPort,那就不好办了,至少我现在还没找到一个办法:既不释放serialPort,又能在一个线程阻塞调用port时,立即终止该线程。