0

我有一个用 C#、Excel-DNA、NetOffice 编写的 Excel AddIn 在每个工作簿上,用户可以运行一些进程来从服务器获取数据(使用 REST Web 服务)。现在,用户希望以不同的时间间隔或时间自动重新获取每个工作簿上的数据(刷新)。比如说,在第一个工作簿上,用户希望每 5 分钟自动重新获取数据(刷新)第二个,他们希望每小时刷新一次数据。第三,他们想在每天下午 1:00 刷新数据。第四,他们想在每天下午 2:20 刷新数据,等等。

我的想法是对于用户想要自动刷新的每个工作簿,添加一个隐藏的工作表以记住刷新的频率或时间。

在插件中设置一个计时器,计时器将每分钟关闭一次,以检查哪个工作簿需要刷新并刷新它。

我觉得它会对性能产生很大的影响。请帮助获得更好的解决方案。谢谢

4

2 回答 2

1

您应该使用线程定期调用刷新方法

一些有用的链接可能会对您有所帮助:

在 C# 中定期运行函数的更好方法

在函数完成其任务后定期执行函数

如何使用线程或计时器从 WPF 客户端应用程序定期执行方法

您可以在插件的开始事件上调用一些方法。

于 2014-05-05T15:37:52.823 回答
1

使用 Reactive Extensions,以及Excel-DNA中对从 Reactive Extensions IObservables 制作“实时”RTD 公式的支持,可能会为您提供一种方法。您可以将刷新率作为函数的参数之一,然后使用此处讨论的内容设置您的 Observable:使用 Rx 轮询网站

然后通过Excel-DNA 中的RxExcel支持将生成的 IObservable 作为“实时”工作表公式公开给 Excel 。可观察对象的每次更新都会更新调用该函数的相应单元格。

于 2014-05-05T18:34:51.397 回答