C#
C# Callback
용성
2022. 1. 28. 10:00
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
switch (textBox1.Text)
{
case "1":
Task.Run(() => List1(List2));
break;
case "2":
Task.Run(() => List1(List3));
break;
case "3":
Task.Run(() => List1(List4));
break;
}
}
public void List4()
{
listBox1.Items.Add("콜백이 시작된다.");
label4.Text = "임용성";
listBox1.Items.Add("===============.");
}
public void List3()
{
listBox1.Items.Add("콜백이 시작된다.");
label3.Text = "김용성";
listBox1.Items.Add("===============.");
Thread.Sleep(1000);
}
public void List2()
{
listBox1.Items.Add("콜백이 시작된다.");
label2.Text = "길용성";
listBox1.Items.Add("===============.");
Thread.Sleep(1000);
}
public void List1(Ddelegate dragon)
{
listBox1.Items.Add("콜백이 시작된다.");
label1.Text = "나는";
listBox1.Items.Add("===============.");
Thread.Sleep(1000);
Task.Run(() => dragon());
}
- C# 은 JavaScript 와 다르게 매개변수에 타입을 지정해 줘야한다.
function d(dragon){
}
public void d(delegate dragon){
}
- 이러한 문제를 해결하기 위해 delegate라는 대리자를 사용하여 콜백을 구현하는 것 같다.
델리게이트 체인
delegate.combine()
- 받아오는 인자에 대한 타입이 같을 경우 combine으로 연결한 함수들이 한번에 모두 실행 가능하다.
728x90