Question

FYI 1: UDF= Fonction définie par l'utilisateur (feuille de calcul) FYI 2: XLL= complément Excel (DLL -> XLL)

J'écris un complément XLL pour Excel en C / C ++ à l'aide de l'API Excel4 () de Microsoft.
LIEN: http://msdn.microsoft.com/en-us/Bibliothèque / BB687835.ASPX

J'ai une tâche "compliquée" que je souhaite utiliser plusieurs threads pour une meilleure performance.Si je comprends que je comprenne que le calcul de l'Excel 2003 est une seule filetée, je veux savoir si mon UDF peut (a) des fils de pénétration pour faire du travail, (b) attendre que les fils finissent, et (c) renvoyer le résultat.

Pour être très clair, je ne ferai aucune automatisation Excel ni appelez Excel4 () dans les threads.

pseudo code:

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

Sur la surface, cela apparaît bien, mais je ne suis pas un expert sur les dlls / xls et le filetage.

P.s.J'ai cherché Google (haut et bas) pour cette réponse et je ne trouve rien à ce sujet.

Était-ce utile?

La solution

Vous pouvez commencer autant de threads que vous le souhaitez, puis les attendre.ASYNC UDF est également pris en charge dans la dernière version de l'API.Vous pouvez trouver quelques exemples dans http://xll.codeplex.com .Regardez au test / async.cpp: http://xll.codeplex.com/ SourceControl / CHANGEMENTS / VUE / 14528 # 139508

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top