线程里访问数据文件冲突问题(170分)

  • 主题发起人 主题发起人 seamost
  • 开始时间 开始时间
S

seamost

Unregistered / Unconfirmed
GUEST, unregistred user!
当一个线程正在对一个数据文件进行写或操作时,程序突然要求线程结束。
写文件有可能比较耗时,所以
mythread.suspend;

mythread.free;
很慢。只好使用Terminatethread(mythread.handle,1);
倒是很快结束了。
但是随后我再启动这个线程时,出现文件读取错误,
明显那个线程还在偷偷使用那个文件。
请如何很快结束耗时线程,又不会出现上述错误?
 
出现这个问题的原因,就该是因为Terminatethread函数在结束一个线程时是一种强行结束
的方式,不能清除占用的系统资源,比如内存,文件等,所以会现读错误码的情况!可以用
ExitThread函数代替试试!
 
ExitThread是在线程内部结束线程。我是在外部结束线程。
不过我一使用这个方法整个程序就结束了!
何解?
 
要不然就设置 一个single,在线程中检测它,当发现需要终止时,就结束该线程!
 
是呀,我想可以在程序中设置一个Flag,在写文件时用循环,不断检测它。一发现变了
就结束线程
 
难道你在 写文件 这种耗时间长且容易出问题的线程中不检测 Terminated 量的值吗?
一旦你结束该线程,则该线程的 Terminated 变为 True ,检测它并作出处理就行了
 
这样:
mythread.terminate;
mythread.waitfor;
什么也不用检测!
 
附加功能 将问题提前
 
多人接受答案了。
 
后退
顶部