0

FYI 1:UDF =ユーザー定義(ワークシート)関数FYI 2:XLL = Excelアドイン(DLL-> XLL)

MicrosoftのExcel4()APIを使用して、C /C++でExcel用のXLLアドインを作成しています。
リンク: http: //msdn.microsoft.com/en-us/library/bb687835.aspx

パフォーマンスを向上させるために複数のスレッドを使用したい「複雑な」タスクがあります。Excel 2003での計算はシングルスレッドであることを理解していますが、UDFが(a)スレッドを生成して作業を実行し、(b)スレッドが終了するのを待ち、(c)結果を返すことができるかどうかを知りたいです。

明確にするために、私はExcelの自動化を行わず、スレッドでExcel4()を呼び出しません。

擬似コード:

バリアントMyComplexUDF(バリアント入力1、バリアント入力2)
{{
    スレッドt1=new WorkerThread(input1);
    スレッドt2=new WorkerThread(input2);
    t1.join();
    t2.join();
    return [t1.Result()、t2.Result()];
}

一見、これは問題ないように見えますが、私はDLL/XLLとスレッドの専門家ではありません。

PS私はこの答えをグーグル(高低)で検索しましたが、問題について何も見つかりません。

4

1 に答える 1

2

必要な数のスレッドを開始して、それらを待つことができます。最新バージョンのAPIでは非同期UDFもサポートされています。いくつかの例はhttp://xll.codeplex.comにあります。test / async.cppをご覧ください:http://xll.codeplex.com/SourceControl/changeset/view/14528#139508

于 2012-05-27T20:46:51.667 に答える