티스토리 뷰
1.멀티쓰레드 => 작업을 병렬로 실행 가능.
프로그램을 실행 시, UI Thread 실행됨.
UI thread 는 싱글 쓰레드임. 여러 개의 기능들이 각 작업이 끝나면 순차적으로 다음 작업이 이뤄짐.
using System.Threading;
public partial class Form1 : Form
{
Thread thread = null;
private void Form1_Load(object sender, EventArgs e)
{
thread = new Thread(new ThreadStart(WorkThread));
thread.IsBackground = true; // UIThread가 종료될 때 내가 만든 쓰레드도 종료시킴.
thread.Priority = ThreadPriority.Normal; // OS(운영체제) 자원을 얼마나 자주 사용할 건지
//AboveNormal, BelowNormal, Hightest, Lowest, Normal
thread.Start();
//WorkThread 먼저 실행된다. 쓰레드 두개가 별개로 동작
//쓰레드 테스트1 -> 쓰레드 테스트2 표시
Thread.Sleep(4000); //4초 동안 쓰레드가 일시중지
MessageBox.Show("쓰레드 테스트2");
}
// thread가 사용할 함수
private void WorkThread()
{
//thread.Start로 실행되는 부분
Thread.Sleep(5000); //5초 동안 쓰레드가 일시중지
MessageBox.Show("쓰레드 테스트1");
}
}
using System.Threading;
public partial class Form1 : Form
{
Thread thread = null;
Thread thread2 = null;
private void Form1_Load(object sender, EventArgs e) //폼이 로드되고 나서 thread 동작
{
thread = new Thread(new ThreadStart(WorkThread));
thread.IsBackground = true;
thread.Priority = ThreadPriority.Normal;
thread.Start();
thread2 = new Thread(new ThreadStart(WorkThread2));
thread2.IsBackground = true;
thread2.Priority = ThreadPriority.Normal;
thread2.Start();
Form2 form2 = new Form();
form2.show(); //form2에서 작업을 개별적으로 실행하려면, form2안에서 thread 작업해야함.
Thread.Sleep(5000); //UIThread가 멈추면 form2도 제어가 안됨. 개별쓰레드로 동작하지 않음.
}
private void WorkThread()
{
try
{
//thread.Start로 실행되는 부분
Thread.Sleep(2000);
MessageBox.Show("쓰레드 테스트3");
}
catch (Exception ex)
{
//오류 내용 기록
}
}
private void WorkThread2()
{
//thread2.Start로 실행되는 부분
Thread.Sleep(5000);
MessageBox.Show("쓰레드 테스트4");
}
//화면 표시 순서 : 폼 -> 2초 후 "쓰레드 테스트3" -> 3초 후 "쓰레드 테스트4"
//쓰레드 쓰는 이유
//서로의 작업에 영향이 가지 않도록 병렬작업
//오래 걸리는 작업(네트워크 전송, 수신, DB작업)을 다른 작업에 동시에 진행 가능
//로딩창, 로딩바를 호출해서 화면에 상태 표시 가능
}
'2023~ > c#(.net framework)' 카테고리의 다른 글
WebApiConfig (0) | 2024.02.06 |
---|---|
C# 윈폼_응용프로그램 개발 14 (0) | 2024.01.28 |
C# 윈폼_응용프로그램 개발 13 (0) | 2024.01.28 |
C# 윈폼_응용프로그램 개발 12 (0) | 2024.01.28 |
C# 윈폼_응용프로그램 개발 11 (0) | 2024.01.27 |