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
'C#' 카테고리의 다른 글
C# DB connection (0) | 2022.01.27 |
---|---|
C# Monitor (0) | 2022.01.26 |
1.26 영상 강의(36~40) 내용 정리 (0) | 2022.01.26 |
1.25 영상 강의(31~35) 내용 정리 (0) | 2022.01.25 |
1.24 영상 강의(26~30) 내용 정리(2) (0) | 2022.01.24 |