Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 자동화 서버는 개체를 작성할 수 없습니다.
- 태마곡
- 네이버1위
- 용역직원
- 이메일수집기
- 심플네이버
- 폰번호정리
- 절대참조
- VisualStudio 2003 .NET
- esperanca.kr
- esperanca
- 이메일수집
- 메일수집
- 전화번호찾기
- http://www.microsoft.com/downloads/
- Visual Studio .NET 9.0 Express Edition
- 자동화 서버
- 김밥할머니 폭행사건
- 김밥할머니 폭행 동영상
- 네이버
- 누난 너무 예뻐
- 비주얼 C++
- 폰번호추출
- Stand 4 U
- 이메일광고
- 애러
- 전번
- 이메일추출
- iostream.h
- 제2의 동방신기
Archives
- Today
- Total
BLOG ESPERANCA
C# callback 사용법 본문
as3 를 예로 들자면 콜백작성이 매우 자유롭다 이유는 Function 형이 존재하기 때문이다.
ex> var someMethod : Function
someMethod()
처럼 변수처럼 선언하였다가 변수를 원할때는 '()' 를 빼줬다가 메소드를 원할때는 '()'를 붙이기만 하면 된다.
c# 은 이러한 나이스한 방법이 다소 제한된다.
교과서 적인 콜백을 보자면, 정석적인 이벤트 선언이나, 기본 api에서 제공하는 콜백을 사용하는 경우를 무수히 볼수 있다.
하지만 더욱 간편하고 as3 의 표현과 같은 느낌으로 사용하는 법을 한번 보자 정말 심플한 콜백 사용법이다.
public partial class Form1 : Form { public Form1() { InitializeComponent(); //콜백테스트 클레스 선언 , 생성 CallBackTEST callbackTest = new CallBackTEST(); callbackTest.onComplete(complete); } //CallBackTEST 클레스에서 선언한 delegate 형식에 맞추어 int 변수 하나를 받는 메소드 작성 private void complete(int count) { Console.WriteLine("callback complete" + count); } } class CallBackTEST { //콜백을 전달할 delegate 선언 (인수 전달/) public delegate void onCompleteDele(int i); // 테스트 :: // 타이머가 시작작고 count가 2가 되었을때 콜백! // onComplete 의 매개변수 _callCompleteMethod 의 형식은 앞서 선언한 "onCompleteDele" 이다 public void onComplete(onCompleteDele _callCompleteMethod) { Timer t = new Timer(); t.Interval = 1000; t.Start(); int count = 0; t.Tick += delegate { if (count == 2) //!!콜백발생 _callCompleteMethod(count); ++count; }; } }물론 as3 보다 복잡하긴 하지만 델리게이트를 선언함으로서 비동기 , 동기 처리가 가능하고 ,인자를 넘기는것도 비교적 단순하다.그리고 정말 장점은 콜백을 받는 메소드의 인텔리센스를 얻을수 있어 as3와 다르게 실수에 의한 런타임 에러를 방지할수 있다.