2010. 3. 27. 10:18
동기 Delegate
1. 우선 Delegate 함수를 만들어준다.
예) delegate void DeleStu(); //여기서 인자를 넣어주면 나중에 Invoke를 호출할때 인자가 추가되서 들어간다.
2. Delegate 객체를 만들어준다.
예) DeleStu sDel = new DeleStu(s.Study); //만들어주면서 안에 Delegate를 이용해 호출할 함수를 인자로 넣어준다.
3. Delegate를 실행한다.
예) sDel.Invoke(); //만약 처음에 생성해줄대 카운트를 인자로넣었다면! Invoke(3); 이렇게 하면 함수를 3번호출하게된다.
비동기 Delegate
1, 2 같다.
3. Delegate를 비동기로 실행한다.
예) TDel.BeginInvoke(EndTDel, TDel); //첫번째는 호출할 콜백함수 , 두번째는 비동기할 객체
//만약 1번에서 인자를 넣어 주었다면 EndTDel 앞에 인자가 더 생긴다.
TDel.BeginInvoke(3, EndTDel, TDel); // 이렇게 호출된다면 Tdel를 호출하면 3번을 실행하게된다.
void EndTDel(IAsyncResult iar) //인자로 비동기할 객체가 들어가는것같다.
{
DeleTeacher TDel = iar.AsyncState as DeleTeacher;
if (TDel != null)
TDel();
TDel.EndInvoke(iar);
}