- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我的 Win32 应用程序在运行时在指定的临时文件夹中执行大量磁盘操作,并且认真地重新设计它是不可能的。
有些客户端有扫描同一个临时目录的防病毒软件(它只是扫描所有内容)。我们试图说服他们禁用它 - 它不起作用,所以这也是不可能的。
每隔一段时间(大约每千次文件操作一次),我的应用程序会尝试对当时由防病毒软件打开并因此被操作系统锁定的文件执行操作。发生共享冲突并导致我的应用程序出错。这种情况平均每三分钟发生一次。
在大多数典型情况下,临时文件夹最多可包含 10 万个文件,因此我不喜欢让它们一直打开的想法,因为这可能会导致在某些边缘情况下资源耗尽。
我的应用程序是否有一些合理的策略来响应所需文件被锁定的情况?也许是这样的?
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 );
}
这是一个可行的策略吗?如果是这样,我的应用程序应该重试多少次以及多久重试一次?如果有什么更好的想法?
最佳答案
在扫描文件时锁定文件的病毒扫描程序非常糟糕。拥有如此糟糕的病毒扫描程序的客户需要更换他们的大脑......;-)
好了,废话不多说了。如果文件被其他进程锁定,那么您可以像您建议的那样使用“重试”策略。 OTOH,您真的需要关闭然后重新打开这些文件吗?在您的过程完成之前,您不能让它们保持打开状态吗?一个提示:当您尝试再次重新打开文件时添加延迟( sleep )。大约 100 毫秒应该足够了。如果病毒扫描器让文件打开那么久,那么它就是一个真正糟糕的扫描器。扫描仪质量差的客户应该看到他们会看到的异常消息。通常,最多尝试三次... -> 打开,失败再试,第二次失败再试,第三次失败就崩溃。
记得以用户友好的方式崩溃。
关于windows - 是否可以合理地绕过扫描工作目录的防病毒软件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/964920/
我是Python和Golang开发人员,最近开始学习Rust。我当前的项目涉及处理数百个压缩日志文件,每个日志文件包含成千上万个JSON条目,每行一个JSON。我最初的尝试出奇的缓慢。通过调查,我注意
我在这里无法理解有关Rust闭包的概念。在我的代码中,默认值为i32。当我创建可变闭包时,它将采用文档中提到的可变引用。 当我在循环中调用inc闭包并尝试在循环内打印count的值时,我会得到可变的借
我是python的新手,并且在python中广泛使用了功能样式。 我正在尝试做的是接收一个字符串(切片)(或任何可迭代的)并使用对当前索引和下一个索引的引用进行迭代。这是我的尝试: fn main()
我通过RUST的性能购买了RUST,因此我决定将一个性能非常重要的项目从JAVA 11转换为Rust。 事实是,用JAVA性能编写的版本比单线程中的3倍要好得多,多线程中的+10倍要好得多 出于上下文
背景: 我正在编写rust的RDBMS db.catalog维护一个从table_id到table的哈希表: pub struct Catalog { table_id_table_map:
我的代码本身可以在文件中工作,但是每当我尝试运行RuSTLings quiz1.rs时,代码的测试部分都会出错。 // GOAL OF PROGRAM // Mary is buying apples
我很难理解Rust toml中的功能条目。 假设我有一个依赖项(在本例中为sqlx)说 sqlx = { version = "0.4.0-beta.1", default-features = fa
我的目标是 序列化(HashSet-> Vec) 并反序列化(&[u8]-> HashSet) uuid的哈希集。 我有以下序列化: fn serialize(set: HashSet) -> Vec
我是一名优秀的程序员,十分优秀!