私のWin32アプリケーションは、機能している間に指定された一時フォルダ内で多数のディスク操作を実行し、真剣に再設計することは問題になりません。作業ディレクトリをスキャンするウイルス対策を合理的に回避できますか?
一部のクライアントには、同じ一時ディレクトリをスキャンするウイルス対策ソフトウェアがあります(すべてをスキャンするだけです)。私たちは彼らにそれを無効にするように話してみました - それはうまくいかないので、どちらも問題ありません。
私のアプリケーションは、非常に時間がかかり、オペレーティングシステムによってロックされているファイルに操作を実行しようとします。共有違反が発生し、アプリケーションでエラーが発生します。これは、平均して3分に1回程度起こります。
ほとんどの一般的なシナリオでは、一時フォルダには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
"cicurrent reads only"モードでそれを開くかもしれません。これはファイルの上書きを禁止します。確かに言えません - アンチウイルス開発者は私よりもよく分かっています。 – sharptooth