Inicio / c# event 예제

c# event 예제

PrintHelper는 이전Print 이벤트를 게시하는 게시자 클래스입니다. 각 인쇄 메서드에서 먼저 PrintEvent가 null이 아닌지 확인한 다음 PrintEvent() 전에 호출합니다. beforePrintEvent 형식의 개체 BeforPrint 대리자, 그래서 어떤 클래스 이벤트에 가입 되어 있는 경우 null 될 것 이다 그래서 대리자를 호출 하기 전에 null을 확인 해야 하는 이유. 이벤트는 캡슐화된 대리자일 뿐입니다. 이전 섹션에서 배운 것처럼 대리자는 참조 형식 데이터 형식입니다. 아래 와 같이 대리자를 선언할 수 있습니다: 현지 시간이 값을 1초씩 변경할 때마다 이벤트를 사용하여 잠재적인 구독자에게 알리는 Clock 클래스를 만들려고 한다고 가정합니다. 다음은 문서화된 전체 예제입니다: 참고: 하나 이상의 개체가 이벤트에 대해 수신 대기(구독)하지 않는 한 이벤트를 발생(게시)해서는 안 됩니다. 즉, 이벤트가 null과 같지 않아야 합니다. 모든 구독자는 게시자가 이벤트를 발생시 호출할 처리기 함수를 제공해야 합니다.

위의 예에서 Number 클래스는 PrintHelper의 인스턴스를 만들고 «+=» 연산자로 전PrintEvent를 구독하고 이벤트를 처리할 함수의 이름을 제공합니다(게시 이벤트가 이벤트를 발생시킬 때 호출됩니다). printHelper_beforePrintEvent는 PrintHelper 클래스의 BeforePrint 대리자와 동일한 서명을 가지는 이벤트 처리기입니다. c#에서 이벤트는 동일한 패턴을 따르며 게시자, 구독자, 알림 및 처리기가 포함됩니다. 이 이벤트를 사용하면 클래스 또는 개체가 특별한 일이 발생할 때 다른 클래스 나 개체에 알릴 수 있습니다. 이벤트를 보내거나 발생시키는 클래스를 게시자라고 하며 이벤트를 수신(또는 처리)하는 클래스를 구독자라고 합니다. 이벤트는 키 누를 때, 클릭, 마우스 이동 등과 같은 사용자 작업 또는 시스템 생성 알림과 같은 일부 발생입니다. 응용 프로그램은 이벤트가 발생할 때 응답해야 합니다. 예를 들어 인터럽트입니다. 이벤트는 프로세스 간 통신에 사용됩니다. .NET 이벤트로 작업할 수 있도록 c# 이벤트 및 대리자에 대한 해당 부분만 설명합니다.

메서드를 가리키는 대리자의 인스턴스를 만들 수 있습니다. 그런 다음 대리자를 호출할 때마다 메서드를 호출합니다. 메서드가 값을 반환하는 경우 대리자는 값을 반환합니다. 다음은 간단한 예제입니다. 다음으로 이벤트 자체는 이벤트 키워드를 사용하여 선언됩니다 -이 코드는 잘 작동하지만 Adder 클래스의 코드는 필요 이상으로 복잡합니다. Microsoft는 이벤트를 정의할 때 사용할 수 있는 두 개의 기본 대리자를 포함시켰습니다. 이러한 대리자는 프레임워크의 모든 곳에서 사용되며 일관된 패턴으로 인해 사용하기가 더 쉽습니다.