상세 컨텐츠

본문 제목

[C#] Thread 해제 및 크로스 Thread 발생

코딩하는코알라/C#

by 룰루랄라코알라 2023. 7. 28. 07:44

본문

스레드 자원 해제 (해제하지 않으면 프로세스에 남아있는다.)
1.1 thread.IsBackground = true; //UI쓰레드가 종료될 때 자원을해제.
-->  해당 방법은 Program.cs 에 지정한 UI thread 가 close 되어야 종료가 된다.

1.2 FormClosing 이벤트를 사용해서 폼이 닫힐 때 쓰레드 해제를 사용 한다. 
        private void Form2_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (th != null)
            {
                th.Abort();
            }
            th = null;
      }


2.크로스 Thread 발생 (UI-Thread외의 Thread에서 컨트롤에 접근시 예외)
크로스 쓰레드 발생은 디버그 모드 진행시 발생 

처리방법은 Invoke 를 사용하여 동기/비동기로 처리방법을 바꿔준다,

//크로스 쓰레드에러 처리완료.
            //this.Invoke((MethodInvoker)delegate
            //{
            //    label1.Text = "aaa";
            //});

            this.Invoke(new Action(() =>
            {
                label1.Text = "aaa";
            }));

반응형

'코딩하는코알라 > C#' 카테고리의 다른 글

[C#] Timer 쓰는 법  (0) 2023.08.02
[C#] 고급문법_람다식  (0) 2023.07.31
[C#] 동기/ 비동기 정의  (0) 2023.07.26
[C#] Thread 기본  (0) 2023.07.24
C# 날짜 시간 차이 비교  (0) 2023.06.28

관련글 더보기