'delegate'에 해당하는 글 1건

이번에 이직을 하고 앞으로 통신프로그램으로 밥먹고 살게됐다.
앞으로 길게 밥먹고 살라믄 배워야지 뭐 어떻게...
기존에는 Timer 이용해서 시간처리 하고 뭐 이랬는데...

소켓통신, 쓰레드, 델리게이트, Invoke.... 아직은 나에게 너무도 생소하기 그지 없는 요것들...

오늘은 쓰레드를 보자...
쓰레드로 인터넷을 검색하거나 도움말을 보면 거의 대부분이 콘솔응용프로그램으로다가 샘플이 있어서
막상 응용프로그램으로 옮겨 적용하다 보면 폼상의 컨트롤과 쓰레드의 충돌이 일어나는 것을 볼 수 있다.
2005버전 부터 생겼다고 하는데 '크로스 쓰레드 예외'라는 에러가 발생하게 된다.
사실 이번 프로젝트도 한 폼에서 여러 쓰레드를 돌리며 데이터를 처리해야 하는데 다시 한번 말하지만 나에겐 너무도 생소하기 부담스러버서...ㅠ.ㅠ
이래저래 찾아보는 와중에 만족할만한 자료가 있어 두고두고 보고자 남겨본다.

-------------------------------------------------------------------------------------------------------
using System.Threading;

        private Thread _Thread;
        private delegate void DisplayDateTimeHandler();

        protected override void OnShown(EventArgs e)
        {
            base.OnShown(e);

            _Thread = new Thread(StartNewThread);
            _Thread.Start();
        }

        protected override void OnClosing(CancelEventArgs e)
        {
            _Thread.Abort();
            base.OnClosing(e);
        }

        private void DisplayDateTime()
        {
            label1.Text = DateTime.Now.ToString();
        }

        private void StartNewThread()
        {
            while (true)
            {

                if (label1.InvokeRequired)
                    label1.Invoke(new DisplayDateTimeHandler(DisplayDateTime));
                else
                    DisplayDateTime();

                Thread.Sleep(1000);
            }
        }
-------------------------------------------------------------------------------------------------------

참고 사이트 : http://kimgwajang.tistory.com/193

'020. Prigraming > 01. C#' 카테고리의 다른 글

[C#] String to Byte  (0) 2010.09.23
[C#] List 제네릭 클래스  (0) 2010.09.08
[C#] 서버시간과의 동기화 처리  (1) 2010.07.24
[C#] 웹상의 파일 다운로드 하기  (0) 2010.07.23
[C#] 사용자 IP 구하기  (0) 2010.06.04

WRITTEN BY
테네시왈츠
항상 겸손하게 항상 새롭게 항상 진실하게

,