Web程序,在应用程序池回收的时候会不停的抛ThreadAbortException异常.先上代码和异常日志.
程序是一个静态类,静态方法里面起一个线程,线程从阻塞队列里面拿数据然后插入到数据库中.理论上当程序被回收的时候线程会抛出一个ThreadAbortException异常,然后在catch里被捕获,打印日志.catch处理完成后会自动被抛出.
但是目前的现象是程序会不停的打印ThreadAbortException异常到日志中,感觉就像catch捕获了异常后没有把异常抛出,直接进入不停抛异常-打印日志的死循环中.而且该情况是偶发,不一定每次回收应用程序池都会触发.大部分情况下回收后打印一条异常就结束了.
有没有高手能够分析一下这个反常的情况是怎么回事么?
程序是一个静态类,静态方法里面起一个线程,线程从阻塞队列里面拿数据然后插入到数据库中.理论上当程序被回收的时候线程会抛出一个ThreadAbortException异常,然后在catch里被捕获,打印日志.catch处理完成后会自动被抛出.
但是目前的现象是程序会不停的打印ThreadAbortException异常到日志中,感觉就像catch捕获了异常后没有把异常抛出,直接进入不停抛异常-打印日志的死循环中.而且该情况是偶发,不一定每次回收应用程序池都会触发.大部分情况下回收后打印一条异常就结束了.
有没有高手能够分析一下这个反常的情况是怎么回事么?
解决方案
15
把 Thread 声明成全局静态的试下呢。
15
代码里调用thread.Abort了吗?
10