2010-05-24 33 views
2

在一个程序中,我跨越一个线程(“工作线程”)。赫拉我复制一些文件,将一些数据写入数据库,最后删除一些其他文件或目录。一切正常。现在的问题是,我决定将删除操作移至其他线程。因此,工作线程现在复制文件或目录,写入数据库,并且如果需要删除一些其他文件,该线程跨越另一个线程,第二个线程删除所需的文件或目录。访问被拒绝从另一个线程

的问题是,用在工作线程完成时,现在时一样在二级线程完成工作100%删除,我有时得到一个“拒绝访问”错误和文件不能删除。不,工作线程绝对不会加入目前要删除的文件和目录。

有时(但并非总是)主线程正在模拟某个用户,因此如果需要,删除线程也在模拟下运行,只是为了授予删除文件所需的权限,所以这不应该是问题。

任何人都知道为什么会发生这种情况?

+2

你有防病毒吗?当你添加,更改和删除文件时,这有时会妨碍你。我倾向于将我的整个开发文件夹树添加到反病毒软件的可信区域,似乎可以缓解这个问题。 – 2010-05-24 09:14:53

+0

模拟仅适用于当前线程,所以如果您在主模拟模式中,您不是在您的工作线程中模拟。 – Remko 2010-05-24 11:43:45

+0

是的,这就是为什么我说:如果需要,删除线程也在模拟下运行,即它再次模拟。 – Lobuno 2010-05-24 13:17:55

回答

1

我真的不认为这是相关的...但尝试禁用窗口的预取。我们在操作Prefetch锁定文件时遇到了很多麻烦,但那是在应用程序的启动阶段。据我所知,Prefetch应该只在系统启动时和应用程序启动时读取文件(取决于当前的配置值),但在创建新线程时也可能会这样做。