c# - 大规模更新电子表格中的 Excel-Dna 易变函数
问题描述
我使用 Excel-Dna 创建了一个加载项,并将导出的函数标记为 Volatile (IsVolatile=true),这给了我所需的行为。函数利用简单查询从 SQL Server 实例中检索数据。
但是,在具有数百个链接到外部源的单元格的电子表格的特定情况下,重新计算通常会冻结 Excel 实例。
虽然我想保留 Volatile 功能,但如果我可以跳过函数重新计算,例如,输入参数相同并且最后一次调用是在很小的时间间隔内进行的,那将很有用。不确定这是否可取,但我正在尝试解决方法以避免 IsVolatile=False。
解决方案
您可以在加载项中保留一个缓存,该缓存存储最后返回的值和最后检查的时间,使用类似 MemoryCache的东西。您还可以考虑确定是否可以使函数成为线程安全的。不过,易失性通常是一个坏主意 - 如果后端数据经常更改,您需要实时馈送 - 请参阅Excel-DNA RTD 示例系列。这可以帮助您摆脱 volatile,但仍会定期更新数据(更改时)。
推荐阅读
- jboss - Wildfly LDAPS 集成失败
- python - QGIS - 如何按给定顺序选择特征
- scala - mill 中指向 build.sc 文件所在目录的首选方法是什么?
- python - try/except 和上下文管理器
- html - 是否可以使用 CSS 更改 Wordpress 中按钮中的链接?
- r - 使用带有寓言和咕噜声的 ETS 的动态趋势或季节性参数的问题
- scikit-learn - 如何修复:ValueError:解包的值太多(预期为 2)PCA
- javascript - React:在 JSON 中传递函数
- python - 在 Pyomo 中使用 core.base 变量向 ConcreteModel 添加二次圆锥约束
- sql - 我在 Access SQL 代码中不断收到“语法错误 FROM 子句”