Для Excel 2003 можно использовать UDF в XLL, используя несколько потоков?
-
12-12-2019 - |
Вопрос
FYI 1: UDF= Определен пользователем (Рабочий лист) Функция FYI 2: XLL= ADD-IN Excel (DLL -> XLL)
Я пишу дополнение XLL для Excel в C / C ++ с помощью API Excel4 () от Microsoft.
Ссылка: http://msdn.microsoft.com/en-us/Библиотека / BB687835.aspx
У меня есть «сложная» задача, которую я хочу использовать несколько потоков для лучшей производительности.Хотя я понимаю, что расчет в Excel 2003 - это отдельная резьба, я хочу знать, может ли мой UDF (а) порождающий темы для работы, (b) ждать потоков, и (c) вернуть результат.
Очень ясно, я не буду делать автоматизацию Excel, ни вызова Excel4 () в потоках.
Псевдо код:
Variant MyComplexUDF(Variant input1, Variant input2) { Thread t1 = new WorkerThread(input1); Thread t2 = new WorkerThread(input2); t1.join(); t2.join(); return [t1.Result(), t2.Result()]; }.
на поверхности, это выглядит хорошо, но я не эксперт по DLLS / XLLS и Threading.
p.s.Я искал Google (High and Low) для этого ответа и не могу найти ничего по этому вопросу.
Решение
Вы можете начать как можно больше потоков, а затем ждать их.Существует также поддержка Async UDF в последней версии API.Вы можете найти несколько примеров в http://xll.codeplex.com .Посмотрите на тест / ASYNC.CPP: http://xll.codeplex.com/ SourceControl / Смешивание / Вид / 14528 # 139508