검색결과 리스트
delegate에 해당되는 글 1건
- 2012.02.23 [C#] Delegate와 Event 1
글
대리자와 이벤트는 종종 많이 쓰인다.
보통 부모와 자식의 관계를 맺고 있거나, 쓰레드를 이용할 경우 필자는 종종 썼다.
예전에 좀 무식하게 부모창으로 넘길 때는 this 키워드를 이용해서 Invoke 하는 방식으로 했는데
혼자서 좀 생각을 해 보니 다음과 같이 해도 될 것 같아 해 보니 동작은 한다.
일단 자식 측에 아래와 같이 코드를 작성해 본다.
public delegate void m_delegate(string msg);
public event m_delegate m_event;
public Form2()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
m_event("Test");
}
그리고 부모 측의 코드는 다음과 같다.
private void button1_Click(object sender, EventArgs e)
{
Form2 form = new Form2();
form.m_event += new Form2.m_delegate(event_test);
form.ShowDialog();
}
private void event_test(string msg)
{
MessageBox.Show(msg);
}
부모 측에 보면 자식에 접근하여 그곳의 이벤트를 생성한 것을 알 수가 있다.
그러나 테스트 코드를 짜다보니 결과가 원하는 대로 나오지 않았다.
왜냐.. 자식 측에 어떤 특정한 이벤트가 일어나지 않으면
m_event("Test"); 부분은 작성 할 수가 없었다.(아니면 누군가 보시다 지적 바랍니다.)
혹시나 싶어서 버튼 이벤트를 주고 해 보니 동작했다.
사용 방법마다 조금씩 다르겠지만.. 이 역시 숙지 해 둔다면 좋을 법 하다.
그리고 대리자와 이벤트의 관계를 잘 보면 이벤트는 대리자의 선언 명으로 형식을 지정하는데
이는 이벤트가 대리자를 캡슐화 한다고 생각해도 무방 할 듯 하다.
RECENT COMMENT