C\#다 중 스 레 드 Thread 사용 예시 상세 설명
다 중 루틴:
스 레 드 수명 주기 상태 도:
C\#라인 우선 순위(확률 높낮이):
기본 사용 예시:
using System;
using System.Threading;
namespace month_9_10._1009
{
class Run5
{
/*
* world, hello
*/
public static void showHello()
{
for(int i = 0; i < 100; i++)
{
Console.WriteLine($"Hello\t#{Thread.CurrentThread.Name}");
}
}
public static void Main(string[] args)
{
Thread.CurrentThread.Name = "Main Thread!";
var childThreadRef = new ThreadStart(showHello);
Console.WriteLine("This is Main process!!!");
var childThread = new Thread(childThreadRef);
childThread.Name = "Child Thread!";
childThread.Start();
for (int i = 0; i < 100; i++)
{
Console.WriteLine($"World!\t#{Thread.CurrentThread.Name}");
}
}
}
}
인 스 턴 스 1:창 탭 순환 스크롤
using System;
using System.Drawing;
using System.Threading;
using System.Windows.Forms;
namespace RollMove
{
public partial class Form1 : Form
{
Thread th1 = null;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
int _sx = 40;
int _ex = 280;
int _top = 70;
th1 = new Thread(() => {
while (true)
{
if (_sx <= _ex)
{
_ex = 280;
label1.Location = new Point(_sx, _top);
Thread.Sleep(20);
_sx += 5;
}
else
{
_ex = 40;
label1.Location = new Point(_sx, _top);
Thread.Sleep(20);
_sx -= 5;
}
}
});
th1.Start();
}
private void Form1_FormClosed(object sender, FormClosedEventArgs e)
{
if (th1!=null)
{
th1.Abort();
}
}
}
}
인 스 턴 스 2:진도 바
using System;
using System.Threading;
using System.Windows.Forms;
namespace month_9_10._1012
{
public partial class Form_3 : Form
{
public static Print.Print print = Console.WriteLine;
Thread th1, th2;
public Form_3()
{
InitializeComponent();
Text = "Welcome!";
CheckForIllegalCrossThreadCalls = false;
th1 = new Thread(new ThreadStart(Pro1));
th1.Priority = ThreadPriority.Lowest;
th1.Start();
th2 = new Thread(new ThreadStart(Pro2));
th2.Priority = ThreadPriority.Highest;
//th2.Start();
print(th1.Priority);
print(th2.Priority);
}
void Pro1()
{
print("XXXXXXX");
for (int i = 0; i <= 100; i++)
{
progressBar1.Value = i;
label1.Text = $"{progressBar1.Value}%";
Thread.Sleep(200);
if (i == 20)
{
th2.Start();
th2.Join();
}
}
}
void Pro2()
{
print("YYYYYYYY");
for (int i = 0; i <= 100; i++)
{
progressBar2.Value = i;
label2.Text = $"{progressBar2.Value}%";
Thread.Sleep(100);
}
}
private void progressBar1_Click(object sender, EventArgs e)
{
print("This is Main threading!");
}
private void Form_3_Load(object sender, EventArgs e)
{
}
private void Form_3_FormClosing_1(object sender, FormClosingEventArgs e)
{
if (th1.ThreadState == ThreadState.Running)
th1.Abort();
if (th2.ThreadState == ThreadState.Running)
th2.Abort();
}
}
}
인 스 턴 스 3:스 레 드 동기 화(티켓 팅 시 뮬 레이 션)
using System;
using System.Threading;
namespace month_9_10._1012
{
class Run2
{
static Print.Print print = Console.WriteLine;
int _num = 10;
void Ticket()
{
while (true)
{
//
//lock (this)
//{
// if (_num > 0)
// {
// Thread.Sleep(100);
// print(Thread.CurrentThread.Name + "-- :" + _num--);
// }
//}
//
Monitor.Enter(this);
if (_num > 0)
{
Thread.Sleep(100);
print(Thread.CurrentThread.Name + "-- :" + _num--);
}
Monitor.Exit(this);
}
}
static void Main()
{
var a1 = new Run2();
Thread t1 = new Thread(new ThreadStart(a1.Ticket));
t1.Name = " ";
Thread t2 = new Thread(new ThreadStart(a1.Ticket));
t2.Name = " ";
Thread t3 = new Thread(new ThreadStart(a1.Ticket));
t3.Name = " ";
Thread t4 = new Thread(new ThreadStart(a1.Ticket));
t4.Name = " ";
t1.Start();
t2.Start();
t3.Start();
t4.Start();
}
}
}
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
WebView2를 Visual Studio 2017 Express에서 사용할 수 있을 때까지Evergreen .Net Framework SDK 4.8 VisualStudio2017에서 NuGet을 사용하기 때문에 패키지 관리 방법을 packages.config 대신 PackageReference를 사용해야...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.