C# event
C# event
C#์์
Event
์EventArgs
๋ ์ด๋ฒคํธ๋ฅผ ๋ค๋ฃฐ ๋ ํจ๊ป ์ฌ์ฉ๋์ง๋ง ๊ทธ ์ญํ ์ด ๋ค๋ฆ ๋๋ค.
1. Event (์ด๋ฒคํธ)
- ์ ์:
Event
๋ ๊ฐ์ฒด ๊ฐ์ ํต์ ์ ์ํ ๋ฉ์ปค๋์ฆ์ ๋๋ค. ํด๋์ค์ ์ํ๊ฐ ๋ณ๊ฒฝ๋ ๋ ๋ค๋ฅธ ๊ฐ์ฒด์๊ฒ ์๋ฆผ์ ๋ณด๋ด๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. - ์ญํ : ํน์ ๋์(์: ๋ฒํผ ํด๋ฆญ, ๋ฐ์ดํฐ ๋ณ๊ฒฝ ๋ฑ)์ด ๋ฐ์ํ์ ๋ ๊ตฌ๋ ์(Subscriber) ๋ฉ์๋๋ฅผ ํธ์ถํ๊ธฐ ์ํด ์ฌ์ฉ๋ฉ๋๋ค.
- ํํ:
event
ํค์๋๋ฅผ ์ฌ์ฉํด์ ์ด๋ฒคํธ๋ฅผ ์ ์ธํฉ๋๋ค.
์์ ์ฝ๋:
using System;
public class Publisher
{
// ์ด๋ฒคํธ ์ ์ธ
public event EventHandler MyEvent;
public void RaiseEvent()
{
Console.WriteLine("์ด๋ฒคํธ๋ฅผ ๋ฐ์์ํต๋๋ค.");
MyEvent?.Invoke(this, EventArgs.Empty); // ์ด๋ฒคํธ ๋ฐ์
}
}
public class Subscriber
{
public void HandleEvent(object sender, EventArgs e)
{
Console.WriteLine("์ด๋ฒคํธ๋ฅผ ์์ ํ์ต๋๋ค.");
}
}
class Program
{
static void Main()
{
Publisher pub = new Publisher();
Subscriber sub = new Subscriber();
// ์ด๋ฒคํธ ๊ตฌ๋
pub.MyEvent += sub.HandleEvent;
pub.RaiseEvent(); // ์ด๋ฒคํธ ๋ฐ์
}
}
์ถ๋ ฅ:
์ด๋ฒคํธ๋ฅผ ๋ฐ์์ํต๋๋ค.
์ด๋ฒคํธ๋ฅผ ์์ ํ์ต๋๋ค.
2. EventArgs
- ์ ์:
EventArgs
๋ ์ด๋ฒคํธ์ ์ ๋ฌํ ๋ฐ์ดํฐ๋ฅผ ๋ด๋ ๊ธฐ๋ฐ ํด๋์ค์ ๋๋ค. - ์ญํ : ์ด๋ฒคํธ ํธ๋ค๋ฌ์ ์ถ๊ฐ ์ ๋ณด(๋ฐ์ดํฐ)๋ฅผ ์ ๋ฌํ ๋ ์ฌ์ฉ๋ฉ๋๋ค. ๋ง์ฝ ์ด๋ฒคํธ์ ์ ๋ฌํ ์ ๋ณด๊ฐ ์๋ค๋ฉด
EventArgs.Empty
๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. - ํ์ฅ: ๋๋ถ๋ถ์ ๊ฒฝ์ฐ
EventArgs
๋ฅผ ์์๋ฐ์ ์ฌ์ฉ์ ์ ์ ์ด๋ฒคํธ ๋ฐ์ดํฐ ํด๋์ค๋ฅผ ๋ง๋ญ๋๋ค.
์ฌ์ฉ์ ์ ์ EventArgs ์์:
using System;
public class MyEventArgs : EventArgs
{
public string Message { get; }
public MyEventArgs(string message)
{
Message = message;
}
}
public class Publisher
{
public event EventHandler<MyEventArgs> MyCustomEvent;
public void RaiseEvent()
{
Console.WriteLine("์ด๋ฒคํธ๋ฅผ ๋ฐ์์ํต๋๋ค.");
MyCustomEvent?.Invoke(this, new MyEventArgs("์ด๋ฒคํธ ๋ฐ์ดํฐ ์ ๋ฌ"));
}
}
public class Subscriber
{
public void HandleEvent(object sender, MyEventArgs e)
{
Console.WriteLine($"์ด๋ฒคํธ ์์ : {e.Message}");
}
}
class Program
{
static void Main()
{
Publisher pub = new Publisher();
Subscriber sub = new Subscriber();
// ์ด๋ฒคํธ ๊ตฌ๋
pub.MyCustomEvent += sub.HandleEvent;
pub.RaiseEvent(); // ์ด๋ฒคํธ ๋ฐ์
}
}
์ถ๋ ฅ:
์ด๋ฒคํธ๋ฅผ ๋ฐ์์ํต๋๋ค.
์ด๋ฒคํธ ์์ : ์ด๋ฒคํธ ๋ฐ์ดํฐ ์ ๋ฌ
์ฐจ์ด์ ์์ฝ
| ๊ตฌ๋ถ | Event (์ด๋ฒคํธ) | EventArgs |
|โโโโโโ|โโโโโโโโโโโโโโโโโโ|โโโโโโโโโโโโโ-|
| ์ญํ | ์ด๋ฒคํธ๋ฅผ ์ ์ํ๊ณ ๋ฐ์์ํค๋ ๋ฉ์ปค๋์ฆ | ์ด๋ฒคํธ ํธ๋ค๋ฌ์ ์ ๋ฌํ ๋ฐ์ดํฐ๋ฅผ ๋ด๋ ๊ฐ์ฒด |
| ์ฌ์ฉ๋ฒ | event
ํค์๋๋ฅผ ์ฌ์ฉํด์ ์ ์ธ | ์ด๋ฒคํธ ํธ๋ค๋ฌ์ EventArgs
๋ฅผ ์ ๋ฌ |
| ํ์ฅ์ฑ | ํ์ฅ ๋ถ๊ฐ๋ฅ (์ด๋ฒคํธ ์์ฒด๋ ์ ์๋ ํํ๋ก ์ฌ์ฉ) | EventArgs
๋ฅผ ์์ํ์ฌ ์ปค์คํ
๊ฐ๋ฅ |
| ์์ | public event EventHandler MyEvent;
| public class MyEventArgs : EventArgs
|
์ ๋ฆฌ
- Event: ์ด๋ฒคํธ๋ฅผ ์ ์ธํ๊ณ ๊ตฌ๋ ์์๊ฒ ์๋ฆผ์ ๋ณด๋ด๋ ๊ธฐ๋ฅ์ ์ ๊ณต.
- EventArgs: ์ด๋ฒคํธ ๋ฐ์ ์ ์ ๋ฌํ ๋ฐ์ดํฐ๋ฅผ ๋ด๋ ์ปจํ
์ด๋.
EventArgs
๋ฅผ ํ์ฅํ์ฌ ์ฌ์ฉ์ ์ ์ ์ด๋ฒคํธ ๋ฐ์ดํฐ๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค.