질문자 : 라에(asdsa1011) | 링크 : http://cafe.naver.com/winmodev/1221 |
<질문내용> 현재 이미지버튼을 클릭하면 0.1초 주기로 눌렀는지 판별하기 위해서 타이머를 돌리고 있거든요 ;ㅁ; 그런데 그렇게되면 주 스레드가 다른작업을 할 수가없어서 워커스레드를 하나 만들어서 사용하려고 합니다. 스레드를 사용하려고 하는데 몇번 테스트를 해 보았지만 UI스레드에 접근하는 방법을 모르겠습니다 ㅜㅜ..;
그리구.. 또 궁금한게 있는데 소켓통신을 하지않고 웹서비스를 통해 채팅을 구현하려고 하는데 웹서비스에 접속하는시간이 오래 걸리기도 하고 (받아오는데 꽤 걸리더군요 시간이..;;) 어떻ㄱ ㅔ 하면 원활하고 빠른 통신을 할 수 있을 지 알고 싶습니다 ㅡㅜ
관련소스/참고자료 private void timer1_Tick(object sender, EventArgs e) //0.1초에 한번씩 실행. { if (CheckBtnClick()) }
private bool CheckBtnClick() /*@@@@@@@@@@@@*/ return false; //아무버튼이 눌려지지 않았을 경우 false리턴 | |
<답변내용> 안녕하세요 루나네스 입니다 스레드에서는 Control로 직접 접근이 불가능 합니다 delegate void MethodInvoker(); 로 하나 만들어 주시고 스레드 에서 이런식으로 선언한 다음 아래처럼 수정이 가능하겠지요 peivate void CheckBtnClick() /*@@@@@@@@@@@@*/ return false; //아무버튼이 눌려지지 않았을 경우 false리턴 원래는 Thread에서 직접 UI Control을 건드리지 못하기 때문에 C# Delegate 로 검색하시면 많은 자료들이 있으니 참고하세요 그런데..... 추가내용 사용자 정의 컨트롤(user control)로 이미지 버튼을 만들어 보세요 | |
작성일 : 2010.02.08 |
Mobile Develop/WinMoDev Q&A