Programing/C#

c# delegate event 사용하기 실전예제

Ezzi 2019. 9. 1. 01:40
반응형

고양이를 원하는 시간 만큼 달리게 하고 달리기가 끝나는 순간 이벤트를 발생하고 싶다고 가정해 보죠.

고양이 class를 만들고 Run이라는 Method를 만든 다음에 인자로 시간을 넘겨서 그 시간만큼 for loop 를 돌게 구현 했습니다.

자 이제 for loop 이 끝나는 순간 event를 발생시켜 줍니다.

event만 발생시키는 것은 심심하니 결과 값을 전달해 줍시다.

이제 고양이 class를 사용할 곳에서 인스턴스를 만들고 이벤트 함수를 등록해 줍시다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
using System;
 
namespace DelegateTest
{
    public class Cat
    {
        public delegate void EndRunEventHandler(string result);
        public event EndRunEventHandler EndRunEvent;
 
        public void Run(int time)
        {
            for(int i = 0; i < time; i++)
            {
                Console.WriteLine("cat running..." + i);
            }
 
            EndRunEvent.Invoke($"result : {time}");
        }
    }
 
    class Program
    {
        static void Main(string[] args)
        {
            Cat cat = new Cat();
            cat.EndRunEvent += Cat_EndRunEvent;
            cat.Run(100);
            Console.ReadLine();
        }
 
        private static void Cat_EndRunEvent(string result)
        {
            Console.WriteLine(result);
        }
    }
}
 
cs

 

실행된 결과를 확인해 볼까요.

 

해당 코드의 소스는 다음 링크에 있습니다. 

https://github.com/Helloezzi/delegate_example

반응형