C# 강좌 : 제 30강 - 쓰레드 (3)
쓰레드(Thread)
쓰레드를 사용할 때 델리게이트 (delegate)를 이용하여 폼과 컨트롤을 비롯하여 사용자 정의 함수를 이용할 수 있습니다.
프로젝트 구성

도구상자에서 TextBox를 Form1에 생성하며, MultiLine에 체크합니다.
전체 코드
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Threading;
namespace Project
{
public partial class Form1 : Form
{
Thread ThreadA;
Thread ThreadB;
delegate void ThreadDelegate_1(string i);
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
ThreadA = new Thread(TEST_1);
ThreadB = new Thread(TEST_2);
ThreadA.Start();
ThreadB.Start();
}
public void TEST_1()
{
for(int i=0; i<100; i++)
{
this.Invoke(new ThreadDelegate_1(TEXT), i.ToString());
Thread.Sleep(50);
if (i == 50) ThreadA.Suspend();
}
}
public void TEST_2()
{
for(int i=0; i< 100; i++)
{
Thread.Sleep(50);
}
ThreadA.Resume();
}
public void TEXT(string i)
{
textBox1.Text = i;
}
}
}델리게이트(delegate)
delegate void ThreadDelegate_1(string i);델리게이트를 선언합니다. 사용될 인수를 포함할 수 있습니다.
this.Invoke(new ThreadDelegate_1(TEXT), i.ToString());Invoke와 delegate를 이용하며 델리게이트와 사용자 정의 함수에서 사용되는 인자의 변수를 동일하게 설정합니다.
this.Invoke(new 선언된델리게이트(사용자 정의 함수), 인수);로 사용할 수 있습니다.
Sleep
Thread.Sleep(ms);을 통하여 밀리세컨드(millisecond) [ms] 동안 쓰레드를 중지할 수 있습니다. (1000 ms = 1s)
- Tip :
쓰레드의 이름이나사용자 정의 함수의 이름을 Thread 선언했을 경우System.Threading.Thread.Sleep(ms);로 사용하여Sleep할 수 있습니다.
Suspend
쓰레드이름.Suspend()를 통하여 특정 쓰레드를 일시 중단 시킬 수 있습니다.
Resume
쓰레드이름.Resume()를 통하여 일시 중단된 쓰레드를 다시 시작할 수 있습니다.
실행 결과

공유하기
Kakao
Naver
Twitter
LinkedIn
Facebook
댓글 남기기