Для Excel 2003 можно использовать UDF в XLL, используя несколько потоков?

StackOverflow https://stackoverflow.com//questions/10696135

Вопрос

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top