我的Win32應用程序在運行時在指定的臨時文件夾中執行大量磁盤操作,並且嚴重重新設計它是不可能的。是否可以合理解決防病毒掃描工作目錄的問題?
某些客戶端具有可掃描相同臨時目錄的防病毒軟件(它只是掃描所有內容)。我們試圖說服他們禁用它 - 它不起作用,所以它也沒有問題。
每隔一段時間(類似於每一千個文件操作就有一次),我的應用程序嘗試對當時正在由防病毒軟件打開的文件執行操作,因此被操作系統鎖定。發生共享衝突並導致我的應用程序出錯。這種情況平均每三分鐘發生一次。
在大多數典型場景中,臨時文件夾最多可以包含100k個文件,所以我不喜歡讓它們隨時打開的想法,因爲這可能會在某些邊緣條件下導致資源用盡。
當我需要的文件被鎖定時,我的應用程序是否有一些合理的策略來應對情況?也許這樣?
for(int i = 0; i < ReasonableNumber; i++) {
try {
performOperation(); // do useful stuff here
break;
} catch(...) {
if(i == ReasonableNumber - 1) {
throw; //not to hide errors if unlock never happens
}
}
Sleep(ReasonableInterval);
}
這是一個可行的策略嗎?如果是這樣,我的申請應該重試多少次和多久?如果有什麼更好的想法?
您確定防病毒已鎖定文件嗎?我無法得到爲什麼防病毒會鎖定一個文件?當它加載一個文件時,它應該允許共享。 – Canopus 2009-06-08 13:38:37
也許它打開它「只允許cicurrent讀取」模式,這禁止覆蓋文件。無法確定 - 防病毒開發人員可能比我更瞭解。 – sharptooth 2009-06-08 13:44:21