'invoke'에 해당하는 글 2건

Invoke 처리 부분 역시나 쓰레드 관계는 아직도 많이 헷갈리고 복잡한거 같다.

델리게이트도 그렇고... 시간은 꽤 흐른거 같지만 내것이 되지 않는 이유는 무엇일까?

아마도 정확하게 이해하지 못하고 그냥 그때그때 그 순간을 넘기기 위한 임시 방편으로만 생각하니 그러한 것 같다.

 

간단히 2D 바코드 스캔시 왜 굳이 시리얼통신으로 해야하는지 아직도 많은 의구심이 든다?

단지 포커스를 잃는다고 해서??? 내가 이전에 쓰는 키보드웨지 상황에선 전혀 그런걸로 걱정안해봤는데

시리얼통신이 들어가니 시리얼포트도 신경써야하고 데이터수신 쓰레드 그리고 그와 연관된 컨트롤 데이터 처리부분의

충돌부분도 신경써야 하고... 과연 시리얼타입이 정답일까? 난 아직까지 키보드웨지 스타일이 더 좋다고 자부한다.

 

  1. try
  2. {
  3. this.Invoke(new System.Windows.Forms.MethodInvoker(delegate()
  4. {
  5. // Input Source
  6. }));
  7. }
  8. catch (ObjectDisposedException ex)
  9. {
  10. System.Diagnostics.Debug.Write(ex.ToString());
  11. }
  •  


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

    ,

    이번에 이직을 하고 앞으로 통신프로그램으로 밥먹고 살게됐다.
    앞으로 길게 밥먹고 살라믄 배워야지 뭐 어떻게...
    기존에는 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
    테네시왈츠
    항상 겸손하게 항상 새롭게 항상 진실하게

    ,