EventHandler 대리자
이벤트 데이터가 없는 이벤트를 처리할 메서드를 만들때 사용한다.
어떤 이벤트를 처리하는 메서드를 만들때 사용하는 형태로
+= 를 통해서 Event를 등록한다.
하단의 예제는 임계점을 설정후 a버튼에 대한 제한 처리를 하는 로직이다.
using System;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Counter c = new Counter(new Random().Next(10));
c.ThresholdReached += c_ThresholdReached;
Console.WriteLine("press 'a' key to increase total");
while (Console.ReadKey(true).KeyChar == 'a')
{
Console.WriteLine("adding one");
c.Add(1);
}
}
static void c_ThresholdReached(object sender, ThresholdReachedEventArgs e)
{
Console.WriteLine("The threshold of {0} was reached at {1}.", e.Threshold, e.TimeReached);
Environment.Exit(0);
}
}
class Counter
{
private int threshold;
private int total;
public Counter(int passedThreshold)
{
threshold = passedThreshold;
}
public void Add(int x)
{
total += x;
if (total >= threshold)
{
ThresholdReachedEventArgs args = new ThresholdReachedEventArgs();
args.Threshold = threshold;
args.TimeReached = DateTime.Now;
OnThresholdReached(args);
}
}
protected virtual void OnThresholdReached(ThresholdReachedEventArgs e)
{
EventHandler<ThresholdReachedEventArgs> handler = ThresholdReached;
if (handler != null)
{
handler(this, e);
}
}
public event EventHandler<ThresholdReachedEventArgs> ThresholdReached;
}
public class ThresholdReachedEventArgs : EventArgs
{
public int Threshold { get; set; }
public DateTime TimeReached { get; set; }
}
}
이벤트를 만들때 위와 같은 형태로 구현을 하면 된다.
Microsoft EventHandler : [링크]
Microsoft EventArgs Class : [링크]
★☆☆☆☆
반응형
'개발 > 기본) 기본기' 카테고리의 다른 글
기본기)Unity) Fake Null (0) | 2021.10.19 |
---|---|
기본기)c#) ?. , ??, ??= 연산자 (0) | 2021.09.28 |
기본기)c# switch statement on a range(switch 문 범위 조건) (0) | 2021.09.13 |
기본기) Switch 문 안에 Switch 문법 (Nested switch-case) (4) | 2021.08.26 |
기본기)페어 프로그래밍(Pair Programing) (0) | 2021.08.09 |
댓글