中国开发网: 论坛: 程序员情感CBD: 贴子 80791
李颖
写程序好习惯真的很重要啊
写程序好习惯真的很重要啊

有一段程序,其中有一个非常基础的类负责从文件中读取一些数据

在它外面很遥远很遥远的地方有一段代码负责遍历目录中的文件,然后显示全部数据

本来这段代码是在主线程中执行的,一切正常,但是速度很慢,用户等待时间比较长

最近把它改为一个独立的线程,并且允许用户切换目录时中止前面的数据显示工作,再开一个新的线程来显示新目录中的文件信息

结果发现快速切换多次之后,文件被锁定,无法移动,整个App关闭之后锁定才解除

追查了一下代码,发现读数据的基础类中,有3处打开文件之后再关闭文件的代码写成顺序结构的了

也就是

OpenFile;
xxx
CloseFile;

结果导致线程中止时,CloseFile没有被执行到

改写成

OpenFile;
try
{
xxx
}
finally
{
CloseFile;
}

立刻一切正常了

还好这两块程序俺老人家都很熟悉,要是换了不熟的人来

这个BUG不知道要到什么时候才能找到原因
DISSENT IS THE HIGHEST FORM OF PATRIOTISM !

--Thomas Jefferson

相关信息:


欢迎光临本社区,您还没有登录,不能发贴子。请在 这里登录