Domanda

FYI 1: UDF= Funzione definita da utente (foglio di lavoro) FYI 2: XLL= Add-in Excel (DLL -> XLL)

Sto scrivendo un componente aggiuntivo XLL per Excel in C / C ++ utilizzando l'API Excel4 () da Microsoft.
link: http://msdn.microsoft.com/en-us/Biblioteca / BB687835.aspx

Ho un compito "complicato" che voglio usare più thread per prestazioni migliori.Mentre capisco che il calcolo in Excel 2003 è single filettato, voglio sapere se il mio UDF può (a) i fili di udF per funzionare, (B) attendere che i fili finiscano, e (c) restituire il risultato. Per essere molto chiara, non farò alcuna automazione Excel né chiamare Excel4 () nelle discussioni.

Pseudo Codice:

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

Sulla superficie, questo appare bene, ma non sono un esperto su DLL / XLLS e filettatura.

P.S.Ho cercato Google (alto e basso) per questa risposta e non riesco a trovare nulla in materia.

È stato utile?

Soluzione

Puoi iniziare tutte le discussioni come vuoi e quindi aspettarle.C'è anche il supporto per Async UDF nell'ultima versione dell'API.Puoi trovare alcuni esempi in http://xll.codeplex.com .Dai un'occhiata al test / async.cpp: http://xll.codeplex.com/ SourceControl / Beandiet / View / 14528 # 139508

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top