카테고리:

2 분 소요

콜백 함수

콜백 함수(callback function)는 프로그래밍에서 특정 이벤트가 발생했을 때 호출되는 함수를 가리킨다. 콜백 함수는 다른 함수나 컴포넌트에 의해 호출되는 함수로서, 보통 이벤트 핸들러로 비동기적인 프로그래밍이나 이벤트 기반 프로그래밍에서 자주 사용된다.

  1. 이벤트 처리(Event Handling): 사용자가 버튼을 클릭하거나 다른 이벤트가 발생했을 때 특정 작업 수행
  2. 비동기 작업(Asynchronous Operations): 비동기 작업이 완료되었을 때 실행되는 함수를 콜백으로 등록하여 작업이 끝날 때까지 대기하지 않고 다른 작업 수행
  3. 타이머 및 인터벌(Timeouts and Intervals): 특정 시간 간격으로 실행되는 작업 수행

C#에서 콜백 함수는 델리게이트(delegate; 대리자)를 통해 구현된다. 델리게이트는 메서드나 메서드의 인스턴스를 참조하는 개체로, 이를 사용하여 함수를 매개 변수로 전달한다.

https://syudal.github.io/post/C-대리자와-delegate-Action-Func

소스 코드

아래는 라이브러리에서 콘솔앱의 System.Console.WriteLine을 콜백하는 함수의 예제이다.

using System;

// 델리게이트 선언: 문자열을 입력으로 받고, 반환값이 없는 콜백 함수를 나타내는 델리게이트
public delegate void ConsoleWriteLineCallback(string message);

public class ConsoleCallbackLibrary {
    // 콜백을 받을 델리게이트 변수
    private static ConsoleWriteLineCallback callback;

    // 콜백 함수를 등록하는 메서드
    public static void RegisterCallback(ConsoleWriteLineCallback callbackFunction) {
        callback = callbackFunction;
    }

    // 라이브러리 내에서 콘솔 출력을 수행하는 메서드
    public static void PerformConsoleWriteLine(string message) {
        // 등록된 콜백 함수가 있다면 호출
        callback?.Invoke(message);
    }
}

class Program {
    static void Main() {
        // 라이브러리에 콜백 등록
        ConsoleCallbackLibrary.RegisterCallback(ConsoleWriteLineCallback);

        // 라이브러리를 통해 콘솔 출력 수행
        ConsoleCallbackLibrary.PerformConsoleWriteLine("Hello, Callback!");

        Console.ReadKey();
    }

    // 실제로 호출될 콜백 함수
    public static void ConsoleWriteLineCallback(string message) {
        // System.Console.WriteLine 호출
        Console.WriteLine(message);
    }
}

이 예제에서 ConsoleCallbackLibrary 클래스가 라이브러리를 나타내며, 콜백을 등록하는 메서드 RegisterCallback과 콘솔 출력을 수행하는 메서드 PerformConsoleWriteLine이 정의되어 있다. 콜백 함수는 델리게이트로 받아 저장하고, 나중에 PerformConsoleWriteLine 메서드를 호출할 때 등록된 콜백 함수가 있다면 해당 함수를 호출한다.

태그: async, callback, delegate, Event, 대리자, 델리게이트, 비동기, 이벤트, 콜백

업데이트: