반응형
오늘 업무용메신저를 제작하다가.. 이모티콘처리하는 부분을 구현하였다.
이모티콘이 들어간 리치박스를 동적으로 보여주고.. 이모티콘을 선택하면 시스템 클립보드에 데이터를 배치하고.. 그걸 가져다가 사용하는 식으로 구현을 했는데..
이게 왠 일~? 이모티콘을 클릭하고.. 클립보드에 올리려는 순간..
ThreadStateException과 함께 아래 메시지가 등장하며 프로그램이 하늘나라로 떠나버리셨다.
OLE 호출을 수행하려면 현재 스레드를 STA(단일 스레드 아파트) 모드로 설정해야 합니다. 표시된 STAThreadAttribute가 Main함수에 있는지 확인하십시오.
나름 프로그램 시작하는 Main메소드에서 [STAThread]라는 문구를 보아왔기에..
동물적 감각으로(?) [STAThreadAttribute]로 고쳐주었다. 결과는 동일하게 프로그램이 죽었다.
검색해보니.. [STAThread]라고 쓰나.. [STAThreadAttribute]라고 쓰나.. 동일한 방식인 것;;
그리고는 몇 번의 삽질 끝에 알아낸 해결방법은 아래와 같다.
해당 메소드를 호출하는 쓰레드를 생성할 때..
쓰레드가 시작하기전 다음과 같은 코드를 넣어주면 끝난다.
Thread th = new Thread(ThreadProc);
th.SetApartmentState(ApartmentState.STA);
th.Start();
오늘도 이렇게 위기를 넘겼다..
반응형
'Program > C#' 카테고리의 다른 글
C# 에서 Direct X 사용하기.. (0) | 2010.03.19 |
---|---|
RichTextBox 한글 깨짐현상 (0) | 2010.03.19 |
C# WebBrowser 컨트롤의 로딩완료(DocumentCompleted) 알아내기 (0) | 2010.03.19 |
C#으로 구현한 사이트 로그인 후 문서 가져오기 (0) | 2010.03.19 |
타임서버 데이타 취하기 (0) | 2010.03.19 |