Per Excel 2003, può un UDF in un XLL usa più thread?
-
12-12-2019 - |
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.
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