【发布时间】:2016-08-26 10:19:08
【问题描述】:
我正在使用 ExcelDNA 编写一个 Excel 插件并创建一个 UDF(用户定义函数)。
UDF 与服务器建立连接,该服务器连接到 SQL 数据库以检索数据并将其发送回客户端。
但是,预计此 UDF 将在一个工作表中被调用数百次。
我正在尝试找到一种方法来减少对服务器的请求数。
到目前为止,模板是这样的(简化的):
ITEM | JAN 2016 | FEB 2016 | MAR 2016 |
---------------------------------------------------
ITEM 1 | UDF | UDF | UDF |
ITEM 2 | UDF | UDF | UDF |
ITEM 3 | UDF | UDF | UDF |
ITEM 4 | UDF | UDF | UDF |
ITEM 5 | UDF | UDF | UDF |
ITEM 6 | UDF | UDF | UDF |
所以,现在,这将总共发送 18 个请求。
我想尝试将请求数减少到 6 个。
我现在正在考虑这样做的方式是,对于每个项目,无论哪个请求首先发送,都会获得该项目列出的所有月份的数据。然后对同一项目的第二次请求将等待第一次请求的结果。
例如:
对于第 1 项, 如果首先调用 JAN 2016 列中的 UDF,它将请求 ITEM 1 的所有月份的数据,然后将该数据存储在某处以供其他请求获取。
然后当第二个请求到来时(假设接下来是 2016 年 3 月),该 UDF 将等待 2016 年 1 月的 UDF 的结果。这样,2016 年 3 月的 UDF 将不必启动另一个与服务器的连接.
但是,我不知道如何实现这一点。我听说过关键字 await 和 async,但没有使用它们的经验。
也欢迎任何其他问题的解决方案。
【问题讨论】:
-
考虑删除
async-await标签,因为它与批处理无关,尤其是您的问题。
标签: c# excel async-await udf excel-dna