【发布时间】:2010-05-24 08:08:02
【问题描述】:
在一个程序中,我跨越一个线程(“工作线程”)。 Hera 我复制了一些文件,将一些数据写入数据库,最终删除了一些其他文件或目录。一切正常。现在的问题是,我决定将删除操作移至其他线程。所以工作线程现在复制文件或目录,写入数据库,如果需要删除一些其他文件,这个线程跨越另一个线程,第二个线程删除了所需的文件或目录。
问题在于,过去在工作线程中完成的删除工作 100%,现在当在辅助线程中完成同样的操作时,我有时会收到“拒绝访问”错误并且文件无法删除。不,工作线程此时绝对不会访问要删除的文件和目录。
有时(但不总是)主线程正在模拟某个用户,因此如果需要,删除线程也在模拟下运行,只是为了授予删除文件所需的权限,所以这应该不是问题。
有人知道为什么会发生这种情况吗?
【问题讨论】:
-
您是否运行了防病毒软件?这有时会妨碍您添加、更改和删除文件。我倾向于将我的整个开发文件夹树添加到防病毒软件的受信任区域中,这似乎可以缓解问题。
-
模拟仅适用于当前线程,因此如果您在主线程中进行模拟,则不会在您的工作线程中进行模拟。
-
是的,这就是我说的原因:如果需要,删除线程也会在模拟下运行,即再次模拟。
-
这在 Win7 上运行吗?再睡一会。
标签: delphi winapi multithreading