запланировать запуск рабочих книг в разное время в надстройке Excel

У меня есть надстройка Excel, написанная на C #, Excel-DNA, NetOffice. В каждой книге пользователи могут запускать некоторый процесс для извлечения данных (используя веб-службу REST) ​​с сервера. Теперь пользователи хотят автоматически обновлять данные (обновлять) в каждой книге через разные промежутки времени или время. Скажем, в первой книге пользователи хотят обновлять данные (обновлять) автоматически каждые 5 минут. Во второй они хотят обновлять данные каждый час. В-третьих, они хотят обновлять данные в 13:00 каждый день. На четвертом хотят обновлять данные в 14:20 каждый день и т. д.

Я думаю, что для каждой рабочей книги, которую пользователи хотят автоматически обновлять, добавьте скрытый рабочий лист, чтобы помнить, с какой частотой или в какое время обновлять.

Установите таймер в надстройке, таймер будет срабатывать каждую минуту, чтобы проверить, какая книга нуждается в обновлении, и обновить ее.

Я чувствую, что это будет иметь большой успех в производительности. Пожалуйста, помогите получить лучшее решение. Спасибо


person toosensitive    schedule 05.05.2014    source источник


Ответы (2)


Использование реактивных расширений и поддержка в Excel-DNA для создания "живых" формул RTD из Reactive Extensions IObservables могут дать вам один подход. Вы можете взять частоту обновления в качестве одного из параметров своей функции, а затем настроить свой Observable, используя что-то вроде обсуждения здесь: Опрос веб-сайта с помощью Rx

Полученный результат IObservable затем отображается в Excel как «живая» формула рабочего листа через RxExcel поддержка в Excel-DNA. Каждое обновление наблюдаемого будет обновлять соответствующие ячейки, вызвавшие эту функцию.

person Govert    schedule 05.05.2014
comment
Похоже, подход должен сработать. Ничего не зная об этом, начните учиться. Спасибо. - person toosensitive; 09.05.2014

Вы должны использовать потоки для периодического вызова метода обновления.

Некоторые полезные ссылки могут вам помочь:

Лучший способ периодически запускать функцию в C#

Выполнение функции периодически после того, как функция завершит свою задачу

Как периодически выполнять метод из WPF клиентское приложение, использующее потоки или таймер

Вы можете вызывать некоторые методы для стартового события вашей надстройки.

person Anubrij Chandra    schedule 05.05.2014