작업 대리자의 유형에는 여러 가지가 있습니다. 예를 들어 Action 대리자는 단일 매개 변수를 사용 하 고 값을 반환 하지 않는 메서드를 캡슐화 합니다. 다음 절차 및 예제에서는 플랫폼 호출을 사용하여 관리되는 응용 프로그램이 로컬 컴퓨터의 각 창에 대한 핸들 값을 인쇄하는 방법을 보여 줍니다. 특히 절차 및 예제에서는 EnumWindows 함수를 사용하여 창 목록과 관리되는 콜백 함수(콜백)를 단계별로 단계별로 사용하여 창 핸들의 값을 인쇄합니다. 이것이 대리자의 기본 구문에 있습니다. 이제 전체 예제 응용 프로그램을 살펴 보겠습니다 : – 함수는 서로 다른 데이터 형식의 하나 이상의 매개 변수를 가질 수 있지만 함수 자체를 매개 변수로 전달하려면 어떻게해야합니까? C#는 콜백 함수 또는 이벤트 처리기를 어떻게 처리합니까? 대답은 – 대리자입니다. 기본적으로 대리자는 메서드와 메서드를 호출해야 하는 대상 개체에 대한 참조를 보유합니다. C#의 대리자는 C++의 함수 포인터와 유사하지만 C# 대리자는 형식안전입니다. 대리자가 메서드를 가리킬 수 있도록 메서드를 매개 변수로 전달할 수 있습니다. 대리자는 콜백 메서드를 정의하고 이벤트 처리를 구현하는 데 사용되며 “대리자” 키워드를 사용하여 선언됩니다. 단독으로 표시하거나 클래스 내에 중첩될 수 있는 대리자를 선언할 수 있습니다. 관리되는 콜백 함수를 만듭니다. 이 예제에서는 두 개의 인수(hwnd 및 lparam)를 취하는 CallBack이라는 대리자 형식을 선언합니다.

첫 번째 인수는 창에 대한 핸들입니다. 두 번째 인수는 응용 프로그램 정의입니다. 이 릴리스에서는 두 인수가 모두 정수여야 합니다. 이렇게 하려면 대리자를 새로 지정하여 대리자와 동일한 시그니처를 가지는 메서드 이름을 전달합니다. 다음은 .NET Framework에서 사용하는 형식 안전 함수 포인터의 한 형태입니다. 대리자는 콜백 및 이벤트 리스너를 구현하는 데 자주 사용됩니다. 대리자는 함께 작동하는 메서드의 클래스에 대해 알 필요가 없습니다. 위의 예에서는 int 형식 매개 변수를 허용하고 void를 반환하는 Print 대리자를 선언했습니다. Main() 메서드에서 인쇄 형식의 변수가 선언되고 PrintNumber 메서드 이름이 할당됩니다.

이제 인쇄 대리자를 호출하면 PrintNumber 메서드가 차례로 호출됩니다. 같은 방법으로 인쇄 대리자 변수가 PrintMoney 메서드에 할당된 경우 PrintMoney 메서드를 호출합니다. 이벤트를 만들고 시작하는 간단한 예제가 있습니다. 난수가 생성됩니다. 숫자가 5와 같으면 FiveEvent 이벤트가 생성됩니다. 그러나 호출이 반환된 후 콜백 함수를 호출할 수 있는 경우 관리되는 호출자는 콜백 기능이 완료될 때까지 대리자가 수집되지 않은 상태로 유지되도록 하는 단계를 수행해야 합니다.