티스토리 뷰
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Runtime.Remoting.Channels;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace WindowsFormsApp1
{
public partial class Form1 : Form
{
Thread thread1 = null;
Thread thread2 = null;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
thread1 = new Thread(new ThreadStart(WorkThread));
thread1.IsBackground = true; // UIThread가 종료될 때 우리가 만든 thread도 종료. << 새로운 백그라운드 쓰레드에서 실행
thread1.Priority = ThreadPriority.Normal; // OS(운영체제) 자원을 얼마나 자주 사용할지 우선순위.
thread1.Start();
thread2 = new Thread(new ThreadStart(WorkThread2));
thread2.IsBackground = true; // UIThread가 종료될 때 우리가 만든 thread도 종료. << 새로운 백그라운드 쓰레드에서 실행
thread2.Priority = ThreadPriority.Normal; // OS(운영체제) 자원을 얼마나 자주 사용할지 우선순위.
thread2.Start();
Thread.Sleep(5000); //메인쓰레드가 5초 동안 일시 중단 >> 폼 로드 되지 못함.
MessageBox.Show("bbbb"); //실행 후 5초 후에 별개로 동작
Form2 form2 = new Form2();
form2.Show(); // form2 개별 쓰레드로 동작하려고 하면, form2_load에서 따로 쓰레드 추가해야함.
Thread.Sleep(5000); //UIThread가 멈추면 Form2도 제어할 수 없음.
}
/// <summary>
/// Thread가 사용할 함수
/// Form1이 로드되고 나서 안에 있는 동작이 실행됨.(메인쓰레드가 일시 중지 되면, 폼 로드 전에 별개로 동작함)
/// </summary>
private void WorkThread2()
{
try
{
Thread.Sleep(1000); //1초 동안 일시 중단
MessageBox.Show("cccc"); //실행 후 1초 후에 별개로 동작
//병렬작업
//오래 걸리는 작업
//네트워크전송, 수신, DB작업...
}
catch (Exception ex)
{
//오류내용...
}
}
private void WorkThread()
{
try
{
//로딩창, 로딩바 표시...
Thread.Sleep(2000); //2초 동안 일시 중단
MessageBox.Show("aaaa"); //실행 후 2초 후에 별개로 동작
}
catch (Exception ex)
{
//오류내용...
}
}
}
}
'2023~ > c#(.net framework)' 카테고리의 다른 글
C# .NET 주니어 2.쓰레드 동기화 (0) | 2025.02.10 |
---|---|
C# .NET 주니어 1.멀티쓰레드 (0) | 2024.05.21 |
WebApiConfig (0) | 2024.02.06 |
C# 윈폼_응용프로그램 개발 14 (0) | 2024.01.28 |
C# 윈폼_응용프로그램 개발 13 (0) | 2024.01.28 |