我在调试一个 程序,首先随机生成一个句柄值,利用这个句柄值Open会话,然后如果没有出错的话,那么程序会执行完毕,Close会话。但是如果中间出了错误,那么久无法Close会话,那么再次调试这个程序的时候,就会出现同步的错误,因为第一个会话没有结束。
    问题来了,因为生成会话的句柄值是随机的,那么也就是无法在第二次打开会话之前关闭第一个会话。同样因为已经存在了第一个会话,而无法打开第二个会话,接着程序就无法执行下去。
    怎么解开这个死锁呢?

解决方案 »

  1.   

    把这个生成会话的句柄值存放到一个static变量(容器)里,不出错的情况下将其移除,出错的情况下,下一个程序执行的时候关闭上一个会话,并移除该值。
      

  2.   

    有朋友告诉我说Catch异常,然后直接执行Close
      

  3.   

    为了对付这个中间的错误嘛。finally里面也可以放一个啊!
      

  4.   

    发现try{}catch没有用。因为中间的那段错误程序本身导致的死锁!!!锁上套锁,哇靠!