Pergunta

Para sua informação 1:Udf = definido pelo usuário (planilha) função fyi 2:XLL = suplemento do Excel (DLL -> XLL)

Estou escrevendo um suplemento XLL para Excel em C/C++ usando a API Excel4() da Microsoft.
Link: http://msdn.microsoft.com/en-us/library/bb687835.aspx

Tenho uma tarefa "complicada" que quero usar vários threads para melhor desempenho.Embora eu entenda que o cálculo no Excel 2003 é de thread único, quero saber se minha UDF pode (a) gerar threads para fazer o trabalho, (b) aguardar a conclusão dos threads e (c) retornar o resultado.

Para ficar bem claro, não farei nenhuma automação do Excel nem chamarei Excel4() nas threads.

Pseudo-código:

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()];
}

Superficialmente, isso parece bom, mas não sou um especialista em DLLs/XLLs e threading.

P.S.Pesquisei no Google (em todos os lugares) por esta resposta e não consigo encontrar nada sobre o assunto.

Foi útil?

Solução

Você pode iniciar quantos tópicos quiser e esperar por eles.Também há suporte para UDFs assíncronos na versão mais recente da API.Você pode encontrar alguns exemplos em http://xll.codeplex.com.Dê uma olhada em test/async.cpp: http://xll.codeplex.com/SourceControl/changeset/view/14528#139508

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top