COM을 통해 노출 된 다음 VB.NET 3.5의 실험 어셈블리를 작성하고 (일부러 작성하는 방법을 가르치고 있습니다.) 일부 Excel VBA 코드에서 호출하여 인스턴스를 시작합니다. 클래스는 일부 Excel 이벤트를 트랩 한 다음 Excel의 활성 통합 문서에서 일부 기능을 수행합니다.BackgroundWorker를 통해 Excel과 상호 작용하는 .NET COM 어셈블리
클래스를 시작하려면 Excel 응용 프로그램에 대한 참조가 VBA에서 전달됩니다 (어셈블리에서 Excel 용 PIA를 사용하고 있습니다).
내 어셈블리에서 시간이 많이 걸리는 작업을 수행해야하므로 BackgroundWorker
을 WinForm에 사용하여 작업이 백그라운드에서 완료되면 작업 진행률 대화 상자를 표시 할 수 있습니다.
이런 식으로 백그라운드 작업자를 사용하여 COM을 통해 Excel과 상호 작용할 때 문제가 있는지 알고 싶습니다. 요청하는 이유는 어셈블리의 주 클래스가 Excel 응용 프로그램 개체에 대한 참조를 보유하고 있기 때문에 활성 워크 북을 판별 한 다음 여기에서 일부 작업을 수행 할 수 있도록 BackgroundWorker
으로 전달됩니다. 하나의 절차를 통해서만 통합 문서 자체 (다른 개체가 아님)에 액세스하고 있습니다.
나는 Excel에서이 부분이 마음에 들지 않을 수도 있음을 알고 있습니다.
닫을 표가 몇 개 있습니다. 왜 이것이 '진정한 질문'이 아닌지 나는 알지 못합니다. 묻는 사람은 무언가가 합법적인지 또는 버그인지 물어 봅니다. "이 방법으로 백그라운드 작업자를 사용하여 COM을 통해 Excel과 상호 작용할 때 발생하는 문제 [?]" –
예, 맞습니다. 문제가 있습니까? 아니면 Excel과 상호 작용할 수있는 더 좋은 방법이 있습니까? 아마 내가 질문을 더 잘 표현 했어야했는데 ...! –