У меня есть надстройка Excel на основе VSTO с UDF на основе XLL.Мы внедрили RTD-сервер для обновления данных в реальном времени.Проблема, с которой я сталкиваюсь - это установка формул по диапазону.Я получаю следующее исключение:
Stacktrace в System.RuntimeType.ForwardCallToInvokeMember (String memberName, флаги BindingFlags, цель объекта, Int32 [] aWrapperTypes, MessageData & msgData)
в Microsoft.OfficeXP.Excel.Range.set_Formula (Object)
Я устанавливаю около 10000 или более формул для диапазонов Excel.Это происходит в блоках, устанавливающих формулу в виде двумерного массива
range.Formula = FormulaMatrix;// string [,] формулаMatrix -> [0,0] -> [1000,0]
Я могу обнаружить, что проблема в том, что Excel не может вызвать данные подключения RTD.Я попытался установить диапазон в блоках и создать задачу для каждого блока и запустить его в потоке пользовательского интерфейса с помощью контекста WinformsSynchronization.Я использовал доступный планировщик задач как
var scheduler = TaskScheduler.FromCurrentSynchronizationContext ();И запустил задачу на этом планировщике.
Но это еще больше усугубило проблему, и я получаю вышеупомянутое исключение чаще.Будем благодарны за любую помощь по вышеуказанному