문제

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

표면에 이것은 OK가 나타나지만 DLL / XLL 및 스레딩에 대한 전문가가 아닙니다.

p.s.나는이 답변을 위해 Google (높고 낮음)을 검색했으며 문제에 대해서는 아무 것도 찾을 수 없습니다.

도움이 되었습니까?

해결책

원하는만큼 많은 스레드를 시작한 다음 기다릴 수 있습니다.또한 최신 버전의 API에서 ASYNC UDF에 대한 지원도 있습니다. http://xll.codePlex.com에서 몇 가지 예를 찾을 수 있습니다.test / async.cpp : http://xll.codeplex.com/ sourceControl / change (view / view / 14528) # 139508

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top