Я работаю над сервером C# RTD, который подключается к источнику данных. Когда источник отключается и повторно подключается, Excel перестает отвечать на вызовы UpdateNotify(), хотя Heartbeat() продолжает регулярно вызываться.
Проблема Сценарий:
Книга Excel с подключенными к ней формулами RTD мой сервер RTD
Источник отключается
Источник появляется снова
Мой сервер RTD успешно повторно подключается к источнику
Мой сервер RTD вызывает UpdateNotify(), чтобы сигнализировать Excel о доступности данных
Excel никогда не вызывает RefreshData() – ячейки остаются замороженными со старыми значениями.
Что работает:
Excel последовательно вызывает Heartbeat() каждые 15 секунд
Мой сервер RTD успешно повторно подключается к Источник
Вопрос Как рабочие серверы RTD обрабатывают повторное подключение к источнику данных, когда обратный вызов COM Excel перестает отвечать на запросы UpdateNotify()?
Существуют ли какие-либо известные закономерности или обходные пути, которые заставят Excel вызывать RefreshData() после повторного подключения базового источника данных?
Я работаю над сервером C# RTD, который подключается к источнику данных. Когда источник отключается и повторно подключается, Excel перестает отвечать на вызовы UpdateNotify(), хотя Heartbeat() продолжает регулярно вызываться. Проблема [b]Сценарий:[/b] [list] [*]Книга Excel с подключенными к ней формулами RTD мой сервер RTD [*]Источник отключается [*]Источник появляется снова [*]Мой сервер RTD успешно повторно подключается к источнику [*]Мой сервер RTD вызывает UpdateNotify(), чтобы сигнализировать Excel о доступности данных [*][b]Excel никогда не вызывает RefreshData()[/b] – ячейки остаются замороженными со старыми значениями. [/list] [b]Что работает:[/b] [list] [*]Excel последовательно вызывает Heartbeat() каждые 15 секунд [*]Мой сервер RTD успешно повторно подключается к Источник [*][code]UpdateNotify()Вызовы [/code] выполняются без исключений. [*]Темы RTD поставлены в очередь и ждут в RefreshData(). [/list] [b]Что не так:[/b] [list] [*]Excel полностью игнорирует вызовы UpdateNotify() [*]Вызовы RefreshData() не происходят, несмотря на более 20 попыток UpdateNotify() в течение более 5 минут. [*]Ячейки Excel RTD отображают устаревшие данные до отключения. [/list] Среда [list] [*]Последняя версия Excel из Office 365, работающая на Win11 x64 [*]Сервер C# RTD (.NET Framework 4.8, реализация интерфейса IRtdServer) [/list] Вопрос [b]Как рабочие серверы RTD обрабатывают повторное подключение к источнику данных, когда обратный вызов COM Excel перестает отвечать на запросы UpdateNotify()?[/b] Существуют ли какие-либо известные закономерности или обходные пути, которые заставят Excel вызывать RefreshData() после повторного подключения базового источника данных?