λκΈ°(Synchronous)
- λ©μλκ° μλ£λ λκΉμ§ μ½λ μ€νμ΄ μ°¨λ¨λλ κ²
- μμ μ μμλλ‘ μ€νλλ―λ‘ νλμ μμ μ΄ λλ λκΉμ§ λ€λ₯Έ μμ μ μννμ§ μμ
μ½λ
//λκΈ° λ©μλ
private void RunAnything(Label lbl) //μ무거λ μ€ννλ ν¨μ
{
for (int i = 0; i < 30; i++)
{
Thread.Sleep(100); //μ€λ λλ₯Ό μ΄μ©ν΄ μ½κ°μ λλ μ΄λ₯Ό μ€. 루ν 1νλΉ 0.1μ΄μ λλ μ΄
lbl.Text = i.ToString(); //루ν μΈλ±μ€λ§νΌ νλ©΄μμ 보μ¬μ€
lbl.Refresh(); //νλ©΄μμ 보μ¬μ€μΌν¨
}
}
//λκΈ°
private void btnWalking_Click(object sender, EventArgs e)
{
RunAnything(lblWalking);
}
private void btnPhone_Click(object sender, EventArgs e)
{
RunAnything(lblPhone);
}
private void btnTalking_Click(object sender, EventArgs e)
{
RunAnything(lblTalking);
}
λΉλκΈ°(Asynchronous)
- λ©μλλ₯Ό νΈμΆνκ³ ν΄λΉ λ©μλκ° μλ£λκΈΈ κΈ°λ€λ¦¬μ§ μκ³ λ€μ μ½λλ₯Ό μ€ννλ κ²
- λΉλκΈ° λ©μλλ λ°±κ·ΈλΌμ΄λ μ€λ λμμ μνλλ―λ‘, λ©μΈ μ€λ λμμ λ€λ₯Έ μμ μν κ°λ₯
μ½λ
//λΉλκΈ° λ©μλ
private async void RunAnythingAsync(Label lbl)
{
for (int i = 0; i < 30; i++)
{
await Task.Delay(100); //λλ μ΄λ₯Ό μ€. 루ν 1νλΉ 0.1μ΄μ λλ μ΄
lbl.Text = i.ToString(); //루ν μΈλ±μ€λ§νΌ νλ©΄μμ 보μ¬μ€
lbl.Refresh(); //νλ©΄μμ 보μ¬μ€μΌν¨
}
}
//λΉλκΈ°
private void btnWalking_Click(object sender, EventArgs e)
{
RunAnythingAsync(lblWalking);
}
private void btnPhone_Click(object sender, EventArgs e)
{
RunAnythingAsync(lblPhone);
}
private void btnTalking_Click(object sender, EventArgs e)
{
RunAnythingAsync(lblTalking);
}
- async ν€μλ: λΉλκΈ° λ©μλλ₯Ό λ§λ€κΈ° μν ν€μλ
- await ν€μλ: λΉλκΈ° λ©μλκ° λͺ¨λ μλ£λ λκΉμ§ λκΈ°νκΈ° μν ν€μλ
- μ΄λ κ² λΉλκΈ° λ©μλλ₯Ό μ¬μ©νκ² λλ©΄ UI λ©μλκ° μ¬μ©μ μΈν°νμ΄μ€λ₯Ό κ³μ μ²λ¦¬ κ°λ₯
await ν€μλ μ¬μ©
μ½λ
//Taskλ₯Ό λ°νν΄μΌ await ν€μλλ₯Ό μ¬μ©ν μ μμ
private async Task RunAllAsync(Label lbl)
{
for (int i = 0; i < 30; i++)
{
await Task.Delay(100); //λλ μ΄λ₯Ό μ€. 루ν 1νλΉ 0.1μ΄μ λλ μ΄
lbAll.Items.Add($"{lbl.Name} - {i}");
}
}
//await ν€μλ μ¬μ©
private async void btnAll_Click(object sender, EventArgs e)
{
await RunAllAsync(lblWalking);
await RunAllAsync(lblPhone);
await RunAllAsync(lblTalking);
}
- await ν€μλ μ¬μ©μ, async ν€μλ μ¬μ© νμ
await ν€μλ μ¬μ©μν¨
μ½λ
//Taskλ₯Ό λ°νν΄μΌ await ν€μλλ₯Ό μ¬μ©ν μ μμ
private async Task RunAllAsync(Label lbl)
{
for (int i = 0; i < 30; i++)
{
await Task.Delay(100); //λλ μ΄λ₯Ό μ€. 루ν 1νλΉ 0.1μ΄μ λλ μ΄
lbAll.Items.Add($"{lbl.Name} - {i}");
}
}
//await ν€μλ μ¬μ© μν¨
private void btnAll_Click(object sender, EventArgs e)
{
RunAllAsync(lblWalking);
RunAllAsync(lblPhone);
RunAllAsync(lblTalking);
}
https://github.com/cherry-kiwi/CS-Async-Lecture
'μ λν° > C# κ°λ ' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
C# λΉλκΈ°μ μ°λ λ (1) | 2023.08.22 |
---|---|
C# λΉλκΈ° μ·¨μ (0) | 2023.08.22 |
onDrag?.Invoke(eventData); (0) | 2023.08.14 |
C# νλ‘κ·Έλλ° (0) | 2023.01.11 |
μ½λ£¨ν΄ (Co+routine) (0) | 2022.11.09 |