콜백 패턴은 프로그래밍에서 자주 사용되는 디자인 패턴 중 하나로, 한 함수가 다른 함수에게 작업의 완료나 발생한 이벤트를 알리기 위해 사용됩니다. 이 패턴은 비동기 처리, 이벤트 리스닝, 또는 특정 조건 발생 시 특정 로직을 수행하도록 할 때 유용합니다. 콜백은 일반적으로 함수의 인자로 다른 함수를 전달하는 방식으로 구현됩니다.
using System;
using System.Threading.Tasks;
public class CallbackExample
{
public void ProcessDataAsync(string data, Action<string> callback)
{
Task.Run(() =>
{
// 데이터 처리 로직을 시뮬레이션
System.Threading.Thread.Sleep(1000); // 1초 대기를 통해 비동기 작업을 가정
string processedData = data.ToUpper(); // 데이터를 대문자로 변환
// 콜백 함수 호출
callback(processedData);
});
}
}
class Program
{
static void Main()
{
var example = new CallbackExample();
example.ProcessDataAsync("hello", result => Console.WriteLine("Processed data: " + result));
Console.WriteLine("Waiting for data processing...");
Console.ReadLine(); // 사용자 입력 대기 (비동기 작업 완료 대기)
}
}
이 예제에서는 비동기적으로 데이터를 처리하고 결과를 콜백 함수를 통해 반환합니다.
using System;
public class EventPublisher
{
// 콜백을 위한 델리게이트 선언
public event Action OnClick;
public void ClickButton()
{
Console.WriteLine("Button clicked!");
OnClick?.Invoke(); // 콜백 이벤트 호출
}
}
class Program
{
static void HandleClick()
{
Console.WriteLine("Button click handled.");
}
static void Main()
{
var button = new EventPublisher();
button.OnClick += HandleClick; // 콜백 등록
button.ClickButton(); // 사용자가 버튼 클릭 시뮬레이션
}
}
이 예제에서는 사용자가 "버튼"을 클릭하면 등록된 콜백 함수 HandleClick이 호출됩니다.