쓰레드(Thread)
프로그램의 코드는 순차적
으로 실행되지만, 필요에 의해서 여러 작업을 한 번에
해야할 경우가 생깁니다.
이때 쓰레드를 이용하면 여러 프로세스를 나눠서 동시에 실행하는 것처럼 구성할 수 있습니다.
프로젝트 구성
도구상자에서 TextBox를 Form1에 생성하며, MultiLine에 체크합니다.
전체 코드
세부 코드
namespace
Thread
를 사용하기 위하여 namespace
에 System.Threading
를 선언합니다.
Thread 생성
코드
를 입력하거나 메서드
, 사용자정의함수
, 델리게이트
, 람다
등을 넘겨줄 수 있습니다.
Thread 코드
for문
을 이용하여 100회
동안 CrossThread()
라는 사용자 정의 함수를 반복하는 코드를 구성합니다.
CrossThread
쓰레드에 직접적으로 호출할 경우 아래와 같은 크로스 쓰레드(Cross Thread)
문제가 발생합니다.
System.InvalidOperationException: ‘크로스 스레드 작업이 잘못되었습니다. ‘textBox1’ 컨트롤이 자신이 만들어진 스레드가 아닌 스레드에서 액세스되었습니다.’
이 문제는 컨트롤을 생성한 쓰레드가 아닌 다른 쓰레드에서 컨트롤을 다루려할 때 발생합니다.
이를 해결하기 위하여 Invoke
와 delegate
를 이용해 안전한 방법으로 폼의 컨트롤을 다룰 수 있습니다.
Thread 실행
쓰레드이름.Start();
를 이용하여 쓰레드를 실행할 수 있습니다.
실행 결과
댓글 남기기