c# callback 예제

콜백 함수는 일반적으로 0이 아닌 값을 반환하여 성공을 나타내고 0은 실패를 나타냅니다. 이 예제는 열거를 계속하기 위해 반환 값을 true로 명시적으로 설정합니다. 예제에서는 하나의 대리자가 있습니다. 이 대리자는 Person 클래스의 두 메서드를 가리키는 데 사용됩니다. 메서드는 대리자를 사용 하 고 호출 됩니다. Microsoft Windows용 프로그래밍에 광범위하게 사용되는 콜백 메서드는 함수 포인터를 다른 함수에 전달해야 할 때 사용되며 전달된 포인터를 통해 다시 호출합니다. 예를 들어 Win32 API EnumWindows 함수가 있습니다. 이 함수는 화면의 모든 최상위 창을 영예화하여 각 창에 대해 제공된 함수를 호출합니다. 콜백은 여러 가지 용도로 사용되지만 가장 일반적인 경우는 다음과 같습니다. 이벤트를 만들고 시작하는 간단한 예제가 있습니다. 난수가 생성됩니다.

숫자가 5와 같으면 FiveEvent 이벤트가 생성됩니다. 대리자를 만들고 EnumWindows 함수에 인수로 전달합니다. 플랫폼 호출은 대리자를 익숙한 콜백 형식으로 자동으로 변환합니다. 모두 모두, 그들은 C ++에서 인터페이스 기반 콜백과 동일한 일을 하지만 함수의 이름을 지정 하거나 도우미 개체를 만드는 것에 대해 걱정할 필요가 없기 때문에 조금 덜 문제가 발생 하 고 어떤 방법에서 대리자를 만들 수 있습니다. 그들은 더 유연합니다. 위의 예에서는 int 형식 매개 변수를 허용하고 void를 반환하는 Print 대리자를 선언했습니다. Main() 메서드에서 인쇄 형식의 변수가 선언되고 PrintNumber 메서드 이름이 할당됩니다. 이제 인쇄 대리자를 호출하면 PrintNumber 메서드가 차례로 호출됩니다.

같은 방법으로 인쇄 대리자 변수가 PrintMoney 메서드에 할당된 경우 PrintMoney 메서드를 호출합니다. 관리되는 콜백 함수를 만듭니다. 이 예제에서는 두 개의 인수(hwnd 및 lparam)를 취하는 CallBack이라는 대리자 형식을 선언합니다. 첫 번째 인수는 창에 대한 핸들입니다. 두 번째 인수는 응용 프로그램 정의입니다. 이 릴리스에서는 두 인수가 모두 정수여야 합니다. 기본적으로 대리자는 메서드와 메서드를 호출해야 하는 대상 개체에 대한 참조를 보유합니다. C#의 대리자는 C++의 함수 포인터와 유사하지만 C# 대리자는 형식안전입니다. 대리자가 메서드를 가리킬 수 있도록 메서드를 매개 변수로 전달할 수 있습니다. 대리자는 콜백 메서드를 정의하고 이벤트 처리를 구현하는 데 사용되며 “대리자” 키워드를 사용하여 선언됩니다.

Uncategorized