Excel 2003の場合、XLLのUDFは複数のスレッドを使用できますか?
-
12-12-2019 - |
質問
FYI 1:UDF=ユーザー定義(ワークシート)機能 FYI 2:XLL= Excelアドイン(DLL - > XLL)
マイクロソフトからのExcel4()APIを使用して、C / C ++でExcelのXLLアドインを書いています。
リンク:> http://msdn.microsoft.com/en-us/ライブラリ/ BB687835.aspx
私はパフォーマンスを向上させるために複数のスレッドを使いたいという「複雑な」タスクを持っています。Excel 2003での計算がシングルスレッドであることを理解している間、私のUDFが作業を行うことができるかどうか(b)スレッドが終了するのを待って、(c)結果を返します。
非常に明確になるために、私はスレッド内でExcel Automationも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()]; }.
表面上では、これは大丈夫ですが、DLLS / XLLSとスレッドのエキスパートではありません。
p.S。私はこの答えのためにGoogle(HighとLow)を検索し、問題について何も見つけることができませんでした。
解決
あなたが望むのと同じくらい多くのスレッドを起動してから待つことができます。APIの最新バージョンのASYNC UDFのサポートもサポートされています。 http://xll.codeplex.com にいくつか見つけることができます。test / async.cppを見てください: http://xll.codeplex.com/ SourceControl / Changeset / View / 14528#139508
所属していません StackOverflow