对于Excel 2003,XLL中的UDF可以使用多个线程吗?
-
12-12-2019 - |
题
fyi 1:UDF=用户定义(工作表)函数 FYI 2:XLL= Excel加载项(DLL - > XLL)
我正在使用来自Microsoft的Excel4()API在C / C ++中编写Excel的xll加载项。
链接: http://msdn.microsoft.com/en-us/库/ BB687835.aspx
我有一个“复杂”的任务,我想使用多个线程以获得更好的性能。虽然我理解Excel 2003中的计算是单线程,但我想知道我的UDF是否可以(a)生成的线程要做工作,(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()]; }.
在表面上,这看起来还可以,但我不是DLL / XLL和线程上的专家。
p.s。我已经搜索了谷歌(高低)的答案,在此问题上找不到任何东西。
解决方案
您可以根据需要启动多个线程,然后等待它们。还可以在最新版本的API中支持Async UDF。您可以在 http://xll.codeplex.com 中找到一些示例。看看测试/ async.cpp: http://xll.codeplex.com/ sourceControl / changeet / view / 14528#139508
不隶属于 StackOverflow