누구나 C#의 Visio 프로젝트에서 자동화 속도를 높이는 방법에 대한 정보가 있으면 궁금합니다. 내가 가지고있는 자동화는 화장실 마루를 짓고 있습니다. 결국 10 개의 노점을 만들기로 선택하고 VBA는 모든 모양을 만들기 위해 약 3 초가 걸립니다.VBA vs C# Visio의 속도 테스트
Microsoft.Office.Interop.Visio 라이브러리를 사용하여 VBA를 C# 양식 응용 프로그램으로 마무리하는 작업 만 완료했습니다. 같은 테스트를하려면 14 초가 걸립니다.
Visio 응용 프로그램을 보이지 않게하고 3 초 후에 Visible 응용 프로그램을 볼 수있게 만들었지 만 VBA와는 거리가 멀어졌습니다.
저는 C#으로 알아 봤습니다. VBA에서는 각 모양을 가진 Visio 드로잉 자체를 볼 수 있지만 그렇지 않습니다. 그래서 나는 또한 사용하려고 시도했다 : "Application.ScreenUpdating". C#에서는 짧은 데이터 형식을 사용하므로 false로 만들고 0으로 만들려고했지만 아무 것도하지 않았습니다. 또한 VBA에서 "True"를 사용하여 켜기를 시도했지만 켜지지 않았습니다.
이제 더 빨리 만들 수있는 팁이 있습니까? 나는 VBA가 C#보다 빠르다는 것에 놀랐다. (어쩌면 Office Suite에 내장되어 있기 때문일 수도있다.)
Visio 프로세스 내부에서 실행되는 코드는 절대로 성공할 수 없습니다. WinForms 프로젝트는 프로세스 경계를 넘고 두 개의 스레드 컨텍스트 스위치가 필요하다는 근본적인 비용으로 인해 항상 어려움을 겪을 것입니다. 매우 간단한 프로퍼티 getter는이 오버 헤드로 인해 약 10,000x 느리게 실행됩니다. interop 멤버가 힘이들 때 훨씬 적은 상처를 입습니다. 비교할 수있는 코드를 작성하려면 추가 기능을 만들어야합니다. –
이것은 VBA 질문이 아닙니다. VBA 태그를 삭제하십시오. – jsotola
프로그래밍 방식으로 마스터를 드롭하면 dropmany 명령을 사용할 수있어 많은 시간을 절약 할 수 있습니다. 현재 지오메트리를 그리는 경우 마스터를 사용하려면 창의력을 발휘해야 할 수도 있습니다. –