C#/수업 내용
event
hyunjin-dev-log
2021. 12. 24. 22:38
using System;
namespace HelloWorld
{
class App
{
//1.class내부에 event키워드로 대리자형식을 정의한다
public event EventHandler AnimationCompleteHandler;
//생성자
public App()
{
}
public void PlayAnimation()
{
for (int i = 0; i < 5; i++)
{
Console.WriteLine("애니메이션 실행");
}
//이벤트를 발생시킨다
this.OnAnimationCompleteHandler(EventArgs.Empty);
}
//2. protected 와 virtual 키워드를 사용해서 메서드를 만든다
protected virtual void OnAnimationCompleteHandler(EventArgs e)
//EventArgs를 매개변수로 받는다
{
//3. 정의한 대리자형식의 지역변수를 선언하고 초기화
EventHandler handler = AnimationCompleteHandler;
//4. Invoke로 실행
handler.Invoke(this, e);
}
}
}
using System;
namespace HelloWorld
{
class Program
{
static void Main(string[] args)
{
App app = new App();
app.AnimationCompleteHandler += App_AnimationCompleteHandler;
app.PlayAnimation();
}
private static void App_AnimationCompleteHandler(object sender, EventArgs e)
{
Console.WriteLine("App_AnimationCompleteHandler: {0}, {1}", sender, e);
}
}
}