采用多线程,正在用MoveFileEx(sdir,ddir,...)移动文件,如何确保别的线程不再移动?还要确保别的线程不再检索?
主要代码如下:
while(condition)
{
AfxBeginThread(myproc,(LPVOID)param);
}
UNINT myproc(LPVOID lparam)
{
CFindFile ff;
CString sdir=(mystruct)lparam->sdir;
CString ddir=(mystruct)lparam->ddir;
sdir+="*.*";
BOOL res=ff.findfile(sdir);
while(res)
{
MoveFileEx(ff.GetFilePath,ddir+ff.GetFileName(),
MOVEFILE_COPY_ALLOW|MOVEFILE_WRITE_THROUGH|MOVEFILE_REPLACE_EXISTING));
}
}
在调试过程中,我发现一个文件剪切走了,但是另一个线程还有可能会去取一下,就有错误号2:"找不到文件";更有在一个线程剪切的过程中另一个线程也会取,显然应该是ff检索到了,报错32:"另一个程序正在使用...";那么我想问一下,如何保证我进行正确剪切操作呢?使得一个线程操作的时候就不要再检索了.先谢了!!