2010-05-24 41 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應該只在系統啓動時和應用程序啓動時讀取文件(取決於當前的配置值),但在創建新線程時也可能會這樣做。