[阅读: 905] 2005-01-12 09:27:17
写程序好习惯真的很重要啊
有一段程序,其中有一个非常基础的类负责从文件中读取一些数据
在它外面很遥远很遥远的地方有一段代码负责遍历目录中的文件,然后显示全部数据
本来这段代码是在主线程中执行的,一切正常,但是速度很慢,用户等待时间比较长
最近把它改为一个独立的线程,并且允许用户切换目录时中止前面的数据显示工作,再开一个新的线程来显示新目录中的文件信息
结果发现快速切换多次之后,文件被锁定,无法移动,整个App关闭之后锁定才解除
追查了一下代码,发现读数据的基础类中,有3处打开文件之后再关闭文件的代码写成顺序结构的了
也就是
OpenFile;
xxx
CloseFile;
结果导致线程中止时,CloseFile没有被执行到
改写成
OpenFile;
try
{
xxx
}
finally
{
CloseFile;
}
立刻一切正常了
还好这两块程序俺老人家都很熟悉,要是换了不熟的人来
这个BUG不知道要到什么时候才能找到原因
DISSENT IS THE HIGHEST FORM OF PATRIOTISM !
--Thomas Jefferson