Programming/.NET

프로그램안에서 어떤 사건(처리)가 발생했을때 자동으로 특정 메서드를 호출하는 것이 이벤트의 개념입니다. 가장 단순하게는 윈폼 계열등의 프로그램에서 버튼클릭과 같은 경우를 예로 들 수 있겠습니다. 사용자가 버튼을 클릭하면 '클릭'했다는 사건이 발생한 것이고 그에대한 메서드가 호출되어 원하는 처리르 진행하는 것입니다.

 

이벤트를 구현하기 위해서는 우선 이벤트를 연결할 대상을 다음과 같이 정의해야 합니다.

 

static event EventHandler myEvent;

 

그리고 이벤트가 발생했을때 실제 호출될 이벤트 처리기 메서드를 작성해야 하는데 해당 메서드는 이벤트를 발생시킨 대상과 이벤트 처리시 추가적인 인자를 받을 매개변수를 지정해서 작성해야 합니다.

 

    static void SumPrint(object sender, EventArgs arg)
    {
        Console.WriteLine("aaa");
    }

 

그리고 해당 메서드를 이벤트에 추가시키고(제거할때는 -= 연산자를 사용할 수 있습니다.)

 

myEvent += SumPrint;

 

특정 상황이 발생했을때 다음과 같이 이벤트를 호출하도록 합니다.

 

myEvent(null, null);

 

예제는 따로 sender와 arg에 필요한 인자전달이 필요없기에 이걸 null로 처리했지만 필요하다면 EventArgs를 상속받도록 클래스를 만들고

 

class myClass : EventArgs
{
    public int myValue;

    public myClass(int myValue)
    {
        this.myValue = myValue;
    }
}

 

이벤트 호출시 해당 클래스를 인자로 전달하여

 

myEvent(null, new myClass(10));

 

원하는 동작을 수행하도록 합니다.

 

    static void SumPrint(object sender, EventArgs arg)
    {
        Console.WriteLine((arg as myClass).myValue.ToString());
    }

 

'Programming > .NET' 카테고리의 다른 글

[C#] ?? 연산자  (0) 2017.08.10
[C#] 형변환(캐스팅 - Casting)  (0) 2017.08.01
[C#] 이벤트(event)  (0) 2017.07.26
[C#] Directory 와 DirectoryInfo 클래스  (0) 2017.07.19
[Visual Studio] Immediate Window  (0) 2017.07.12
[ASP.NET] SQL Server 캐시 종속성  (0) 2017.07.04
0 0