피터지고 치열하게 삶을 유지하다  
Front Page
Notice | Keyword | Tag | Location | Guestbook | Admin | Write Article   
 
메시지 루프에 해당하는 글 1건
2007/01/04   COM Interop 그리고 메시지 루프 혹은 멀티 스레드


COM Interop 그리고 메시지 루프 혹은 멀티 스레드
어려운 문제이다.

4개월이 흐르는 동안 가끔식 이슈가 떠오를 때마다 관련글을 찾아보았지만 현재 문제가 되고 있는 부분을 깔끔하게 해결하지 못하고 있다.

Unmanaged Application인 MFC응용 프로그램에서 Windows Form Control을 Hosting하고 Form Control에서 발생하는 Message의 Overhead를 Form Control을 생성하는 별도 메시지 루프를 가진 스레드를 생성하여 MFC 응용프로그램 자체에서 해결할려고 줄기차게 시도하였다.

그러나 스레드간 메시지 전달에 있어 많은 문제가 발생하였다. 따라서 해결책은 이하 .NET Framework에서 메시지 루프를 생성하여 Overhead를 극복하는 방법밖에 없는 듯 하다.

이 주제에 대해 차분한 정리가 필요할 듯 하다. (구글 검색 키워드 : com interop message loop form control)

Windows Forms 및 관리되지 않는 프로그램(한글)
: .NET Form 과 Form Control을 Unmanaged Application과 상호 운용할때 관련되는 주제들의 Index Page

Windows Forms and Unmanaged Applications Overview (한글)
: .NET Form Control을 Unmanaged Application에서 Hosting 하기 위해 기본적으로 알아야 할 사항들을 설명하고 있다.

Automating a .NET WinForm through COM Interop
: 이와 관련된 주제인 다른 포스트, 그러나, 위 MSDN의 내용과 크게 벗어나지는 않는 듯 하다.

.NET Framework 1.1 Provides Expanded Namespace, Security, and Language Support for Your Projects
: MSDN 매거진에 나온 글이다. Form Control을 Unmanaged Client에서 Hosting 하는 것에 대해 언급하고 있다.

.NET Framework Windows Forms 컨트롤을 MFC 뷰로 사용
: 다음의 사항들을 보여준다고 한다. 단 Managed Extensions for C++ 을 위한 예이므로 Unmanaged App Hosting 과는 다른 주제인듯. 어째든 참고해 보자.

Managed Extensions for C++를 사용하여 MFC에서 .NET Framework Windows Forms 컨트롤 호스팅
Windows Forms 컨트롤을 MFC 뷰 클래스로 사용
MFC 명령 라우팅 인프라를 Windows Forms 컨트롤로 확장
.NET Framework 사용자 지정 특성을 사용하여 명령 처리기 및 명령 UI 업데이트 처리기 지정

MFC에서 Windows Form 사용자 정의 컨트롤 사용
: 이것은 MFC에서 Windows Form 컨트롤 사용이라는 주제에 딱 맞는 것이다. 그러나 Message Loop의 분리와는 별개이다. 하지만 역시 참고할 만한 주제이다.

MSDN의 예제를 따라 개별 스레드에서 .NET 메시지 루프를 생성하는 것을 간단히 테스트 해 보았으나, 이것의 문제는 Form 창이 별도의 모달로 뜬다는 것이다. 내가 원하는 것은 "Windows Form Control을 MFC에서 창 객체에 embedded 하고, Form Control을 위한 별도의 메시지 루프를 두는 것" 이다.

다음으로 테스트는 Form이 아닌 Form Control을 .NET 스레드에서 생성하고 Application.Run을 통해 메시지 루프를 돌린 후 MFC에서는 스레드에서 생성된 Form Control을 받아와 Hosting을 해주었다. 동작에는 이상이 없으나, --; 메시지가 Main MFC로 넘어왔다.

아! 역시 확실한 방법이 없다. 현재 쓰는 Windows Form Control의 메시지 처리 오버헤드가 너무 심하다. --;

기본적으로 UI Thread 라는 관점에서 접근해야 할 듯 하다.
Multithreaded Applications using MFC
: 전체적으로 CWinThread에 대해 다루고 있다. 스레드의 기본적인 것도 다루지만 UI 스레드를 생성하는 것도 잠깐 언급한다. 이건 입문 수준

기타 CWinThread로 UI 스레드를 생성하는 것과 주의점에 대해 다루는 문서들이 있다.

http://weblogs.asp.net/justin_rogers/articles/126345.aspx

Updating a list from a thread - the UI control should do the checking

http://andyclymer.blogspot.com/2006/07/custom-controls-and-cross-_115218128668993214.html
: Window Control에 대한 cross-threading에 대해 다루고 있다.

Hosting of MFC MDI applications from within WinForms and WPF applications
: Managed로 넘어가게 된다면 이것도 참고할 만한 좋은 주제로 보인다.

크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기
Tag : ,
Track this back : http://www.codeforum.net/blog/pitoosung/trackback/27

name    password    homepage
 hidden


BLOG main image
피투성의 IT 분투기
 Notice
(2009.11.30) - ㅠ.ㅠ 안녕! 서버 H/W 시스템 교체(서버보드 사망, HP Workstation으로 교체)
(2008.2.2) IP : 195.225.178.29 - 스팸 차단 조치
(2008.1.14) 오후 06:34 ~ 08:07 : 시스템 복구
(2008.1.14) 오전 00:25(?) : 시스템 다운 - 흠 심각하군!
(2008.1.13) 오후 11:31 : 시스템 리부팅됨
(2008.1.13) 시스템 복구 : 오전(?)~오후 1:00
 Category
전체 (148)
프로그래밍 (42)
IT 세상속으로 (42)
세상 엿보기 (26)
지하창고 (18)
책의 향기 (12)
생각의 힘(바둑) (4)
OCR-내가 다 읽어줄께 (1)
두발의 짐승 (2)
지능형 로봇 (1)
 Calendar
«   2010/09   »
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30    
 Recent Entries
투명 Display 그리고 Augm... (2)
64bits(x64) Windows OS...
NFS & Eclipse & CDT & In...
행복에 대해 생각하며
Virtual Audio Cable (가...
 Recent Comments
^^ 안녕! 축하축하. 난 아...
피투성 - 03/16
오랜만에들림니다 아이폰...
쭌 - 03/15
Thanks for your kind tra...
hyungju - 2009
정보 감사합니다 덕분에...
허수 - 2009
관리자만 볼 수 있는 댓글...
- 2009
 Recent Trackbacks
내가 생각하는 한의학의...
Life Is Always Emergency
FreeBSD 6.2, 64bit, 메모...
엘레노아의 작업로그
알약 백신 제대로 사용하...
촌철살인
유용한 블로그 툴 몇개..
ENTClic@blog...just anot...
국내의 검색엔진에 등록하...
케이알선의 이야기
 Archive
2010/01
2009/12
2009/07
2008/09
2008/03
 Link Site
00_피투성의 지식창고_00
 Visitor Statistics
Total : 70563
Today : 57
Yesterday : 46
텍스트큐브 배너
Eolin
rss