- 오토매이션 객체 생성시 시간이 걸리는 부분
개발 환경 : VB.net (vs2010) .
'객체 선언
public hwpobj As HwpbjectLib.IHwpObject
'클래스 생성시
hwpObj = CreateObject(HWPFrame.HwpObject)
로 생성하여 사용하고 있습니다.
이때 객체 생성시 거의 1초가량이 소요되고 있는데 이 부분이 원래 그런건지 아님 제가 잘못 처리를 하여 소요되고 있는지 확인부탁드리겠습니다.
기존 ocx의 ActiveX컨트롤을 사용시에는 객체 생성처리가 없어 시간이 소요되고 있지 않은데 OLE객체 생성시에는 시간이 소요되어 문의 드립니다.
2.Ole객체의 함수를 호출하여 처리시 기존 Ocx 컨트롤을 이용할때보다 미묘하게 시간이 소요되는 부분
상기 생성한 객체를 이용하여 동일한 문구를 처리할 경우
hwpObj.GetPos, hwpObj.SetPos , hwpObj.SelectText 등의 함수를 호출할때 기존ocx 컨트롤의 비슷한 함수를 호출할 경우 0.000001초의 범위에서도 시간소요없이 즉시 처리되어지는것으로 판단되나 ole객체를 이용하여 처리시에는 처리하는 문구에 따라 틅리지만 0.001 ~ 0.01초 정도의 시간이 소요되는 것으로 확인되고 있습니다.
ole객체를 이용하는 것으로 인해 상기 시간이 소요되는것이 맞는지 아니면 제가 처리 방식에 있어 명확히 처리 하지 않아 발생하는 문제인지 문의드립니다.
안녕하세요 ^^
기존 한글 컨트롤의 경우 OLE 클라이언트 방식으로 개발하시는 프로세스에 Embedded 되어 동작을 하게 됩니다.
하지만 한글 오토메이션의 경우 한글 프로세스가 OLE 서버로 동작하여 다른 클라이언트 에서 요청이 오면 해당 기능을 수행하는 방식이기 때문에 2의 질문처럼 미묘하게 시간이 소요되는 것 같습니다.
1의 질문에 대한 답도 한글 오토메이션의 경우 한글 프로세스가 떠야하기 때문에 한글이 초기화하느 시간 때문에 객체생성에 시간이 걸립니다.
답변이 도움이 되었으면 좋겠네요 감사합니다 ^^
3개의 좋아요
답변 감사드립니다.
추가 질문이 있어 댓글을 올립니다.
기본적으로 한글 오토메이션 내부의 처리는 동기식으로 알고 있는데…
프로그램에서 오토메이션 객체의 함수들을 비동기식으로 루프돌면서 호출하는 경우
오토메이션의 오작동 우려가 없는지 문의 부탁드립니다.
기본적으로 오토메이션의 함수들의 처리는 실체 한글프로그램에서 액션을 기준으로 처리되어 지는것으로 아는데
이 경우 미처 한가지 액션이 마무리 되지 앉은 상태에서 비동기로 다른 함수호출이 있을경우 문제가 없는지 회신 부탁드립니다
1개의 좋아요
안녕하세요 .
비동기로 처리하게되면 쓰레드를 통해서 동작이 될 것 같습니다.
한글 프로그램 내부엔 작업을 단일 쓰레드로 하기 때문에, 문제가 생길수도 있을것 같습니다.
감사합니다.
1개의 좋아요
답변주신 부분에 관해 몇가지 추가 질문을 드립니다.
- 한컴 오토메이션 내부의 경우 단일 스레드라고 하셨는데 이 경우 호출을 비동기 방식의 멀티스레드로 전달하더라도
속도 향상에 별다른 영향이 없을 것 같은데 대응 방안이 있을지 ?
( 현재 프로세스상 2~3개의 한컴오토메이션내부의 문단을 비교처리하는 프로세스가 있는데 이 경우 루프를 돌며 계속 체크하기 위해 함수등을 수백에서 ~ 수천번 호출하는데 속도를 줄이기 위해 비동기를 고려하였음 )
-
한컴 오토메이션도 기존의 MS의 엑셀처럼 실제 기동되는 프로그램으로 내부적으로 인식한다면 어떤 작업을 지시한후 해당 작업진행중 다른 액션을 요청하는 경우에는 메모리 오류등이 발생하는 현상이 있는데 동일한 문제가 발생하는지 확인 부탁드립니다.
-
ActiveX컨트롤 이용시에 비해 동일 함수 호출등을 할 경우 기존보다 시간이 지체되는 문제로 인해 고민중인데 혹시 기존에 해당 문제에 대한 지식이나 경험이 있다면 공유부탁드려도 될련지?
바쁘시더라도 내용 확인 후 회신 부탁드리겠습니다.
안녕하세요,
1,2 관련해서 현재 한글에선 작업스레드가 하나만 지원가능하기 때문에 불가능하고 문제가 생깁니다.
3 관련해서는 따로 방법이 없을것 같습니다.
감사합니다 ^^