728x90
반응형
이번 포스팅은 C#에서 이벤트를 어떻게 정의하고 발생시키는지에 대해 알아보겠습니다.
| 이벤트란?
- 이벤트(Event) : 객체 또는 클래스에서 발생하는 상황, 조건을 나타내며
다른 부분(이벤트 핸들러)에 이를 알리는 메커니즘
- 특정 조건이 충족될 때 호출되며, 예를 들어 GUI 요소에서 버튼 클릭, 마우스 이동 등 이벤트 발생
| 이벤트 정의
public event EventHandler MyEvent;
- 기본적으로 클래스 내에서 delegate 형식을 사용하여 정의되며
위 코드에서 MyEvent는 EventHandler 형식의 이벤트를 정의하는 것입니다.
| 이벤트 발생 메서드 정의
- 이벤트를 발생시키기 위해서 메서드를 정의하여 이 메서드는 이벤트가 발생할 때 호출 됩니다.
public void RaiseEvent()
{
Console.WriteLine("이벤트 발생!"); // 이벤트 발생 메시지 출력
// 이벤트 핸들러가 등록되어 있는지 확인하고 호출합니다.
MyEvent?.Invoke(this, EventArgs.Empty);
}
- 이 코드에서 RaiseEvnet 메서드는 이벤트를 호출하고 ?. 연산자를 사용하여 이벤트가 null 일 경우 Invoke 메서드를 호출하지 않도록 보장합니다.
| 이벤트 핸들러 등록
myObject.MyEvent += MyEventHandler;
- 이벤트를 처리하기 위해 이벤트 핸들러를 등록해야 합니다.
- 이벤트가 발생했을 때 실행되는 메서드입니다.
| 이벤트 처리
- 이벤트가 발생하면 등록된 이벤트 핸들러가 실행됩니다.
- 이벤트 핸들러는 이벤트가 처리되는 곳으로 이벤트가 발생하면 실행됩니다.
static void MyEventHandler(object sender, EventArgs e)
{
Console.WriteLine("이벤트가 처리되었습니다."); // 이벤트 처리 메시지 출력
}
| 이벤트 발생 코드 종합
class MyEventPublisher
{
// 이벤트를 정의합니다.
public event EventHandler MyEvent;
// 이벤트를 발생시키는 메서드를 정의합니다.
public void RaiseEvent()
{
Console.WriteLine("이벤트 발생!"); // 이벤트 발생 메시지 출력
// 이벤트 핸들러가 등록되어 있는지 확인하고 호출합니다.
MyEvent?.Invoke(this, EventArgs.Empty);
}
}
class Program
{
static void Main()
{
MyEventPublisher publisher = new MyEventPublisher();
// 이벤트 핸들러를 등록합니다.
publisher.MyEvent += MyEventHandler;
// 이벤트를 발생시킵니다.
publisher.RaiseEvent();
}
// 이벤트 핸들러 메서드
static void MyEventHandler(object sender, EventArgs e)
{
Console.WriteLine("이벤트가 처리되었습니다."); // 이벤트 처리 메시지 출력
}
}
| 마무리
- 이벤트 발생 시키는 방법에 대한 전체적인 내용을 정리하였습니다.
이벤트 기반 프로젝트를 개발하면서 자주 사용했던 방법이며
객체 간의 통신 및 비동기 이벤트 처리에 유용하게 사용하였습니다.
틀린 점이 있거나 질문이 있으시면 댓글로 남겨주세요!
다음 포스팅으로 찾아오겠습니다.
감사합니다 :)
728x90
반응형
'C#' 카테고리의 다른 글
C# 멀티캐스트 이벤트 이해 : 다중 이벤트 핸들러 관리 (0) | 2023.11.02 |
---|---|
C# 이벤트 정의와 등록 및 제거 방법 (0) | 2023.11.01 |
자동 구현 속성 이해 (Auto-implemented Properties) (0) | 2023.10.30 |
[C#] CancellationToken 이해 (0) | 2023.10.25 |
[C#] Marshal.Copy 이해 (0) | 2023.09.26 |