Visual C# 개발 환경과 함께 C#의 이벤트 구독 및 구독 해지 설명
이벤트 개요 이벤트의 특징은 다음과 같습니다.
4
4
4
4
4
에 있습니다.NET Framework 클래스 라이브러리에서 이벤트는 이벤트Handler 위임과 이벤트Args 기반 클래스를 기반으로 합니다.
구독 및 구독 취소 이벤트 이벤트를 일으킬 때 호출되는 사용자 정의 코드를 작성하려면 다른 종류에서 발표된 이벤트를 구독할 수 있습니다.예를 들어, 사용자가 이 단추를 눌렀을 때 유용한 동작을 수행할 수 있도록 어떤 단추의 클릭 이벤트를 구독할 수 있다.Visual Studio IDE를 사용하여 이벤트에 가입할 때 속성 창이 보이지 않으면 [디자인] 뷰에서 이벤트 프로세서를 만들 창이나 컨트롤을 마우스 오른쪽 단추로 클릭하고 [속성]을 선택합니다.속성 창 맨 위에서 이벤트 아이콘 을 클릭합니다.생성할 이벤트(예: Load 이벤트)를 두 번 클릭합니다.Visual C# 은 빈 이벤트 처리 방법을 만들어 코드에 추가합니다.또는 [코드] 뷰에서 코드를 수동으로 추가할 수도 있습니다.예를 들어 다음 코드 줄은 Form 클래스에서 Load 이벤트를 일으킬 때 호출되는 이벤트 처리 방법을 설명합니다.
private void Form1_Load(object sender, System.EventArgs e)
{
// Add your form load event handling code here.
}
프로젝트 Form1.Designer.cs 파일의 Initialize Component 메서드에서 이벤트를 구독하는 데 필요한 코드 줄을 자동으로 생성합니다.코드 행은 다음과 같습니다.
this.Load += new System.EventHandler(this.Form1_Load);
프로그래밍 방식으로 이벤트를 구독하여 이벤트 처리 프로그램 방법을 정의합니다. 그 서명은 이 이벤트의 위탁 서명과 일치합니다.예를 들어, 이벤트가 EventHandler 위임 유형을 기반으로 하는 경우 다음 코드는 메소드 스텁을 나타냅니다.
void HandleCustomEvent(object sender, CustomEventArgs a)
{
// Do something useful here.
}
플러스 값 연산자(+=)를 사용하여 이벤트에 이벤트 처리 프로그램을 추가합니다.다음 예제에서는 publisher라는 객체에 RaiseCustom Event라는 이벤트가 있다고 가정합니다.구독자 클래스는 발행자 클래스를 인용해야 이벤트를 구독할 수 있음을 주의하십시오.
publisher.RaiseCustomEvent += HandleCustomEvent;
앞의 구문은 C# 2.0의 새 구문입니다.이 구문은 새 키워드를 사용하여 포장 위임을 명시적으로 작성해야 하는 C# 1.0 구문과 같습니다.
publisher.RaiseCustomEvent += new CustomEventHandler(HandleCustomEvent);
또한 lambda 표현식을 사용하여 이벤트 프로세서를 추가할 수도 있습니다.
public Form1()
{
InitializeComponent();
// Use a lambda expression to define an event handler.
this.Click += (s,e) => { MessageBox.Show(
((MouseEventArgs)e).Location.ToString());};
}
자세한 내용은 LINQ 외부에서 Lambda 표현식(C# 프로그래밍 안내서)을 사용하는 방법을 참조하십시오.익명 방법으로 이벤트를 구독합니다. 나중에 이벤트를 구독을 취소할 필요가 없으면, 이 이벤트에 익명 방법을 추가할 수 있습니다.다음 예에서,publisher라는 대상이 RaiseCustom Event라는 이벤트를 가지고 있다고 가정하고,Custom Event Args 클래스를 정의하여 특정한 유형의 전용 이벤트 정보를 불러옵니다.구독자 클래스는publisher를 인용해야 이벤트를 구독할 수 있음을 주의하십시오.
publisher.RaiseCustomEvent += delegate(object o, CustomEventArgs e)
{
string s = o.ToString() + " " + e.ToString();
Console.WriteLine(s);
};
익명 함수 구독 이벤트를 사용하면 이벤트의 구독 취소 과정이 비교적 번거로울 수 있음을 반드시 주의하십시오.이 경우 구독을 취소하려면 이 이벤트의 구독 코드로 돌아가서 이 익명 방법을 의뢰 변수에 저장한 다음 이 의뢰를 이 이벤트에 추가해야 합니다.일반적으로 다음 코드에서 이벤트에 대한 구독을 취소해야 한다면 익명 함수를 사용하지 않는 것이 좋습니다.
구독 취소 이벤트가 발생할 때 이벤트 처리 프로그램을 호출하는 것을 방지하려면 이 이벤트의 구독을 취소하십시오.자원 유출을 방지하려면 구독자 대상을 석방하기 전에 구독 사건을 취소해야 한다.구독 취소 이벤트에 앞서 게시 대상에서 이 이벤트의 기초가 되는 다중 방송 의뢰는 구독자가 봉인된 이벤트 처리 프로그램의 의뢰를 인용한다.게시 대상이 이 인용을 유지하기만 하면 쓰레기 회수 기능은 구독자 대상을 삭제하지 않는다.가입 취소 이벤트는 마이너스 대입 연산자(-=)를 사용하여 이벤트에 가입을 취소합니다.
publisher.RaiseCustomEvent -= HandleCustomEvent;
모든 구독자가 구독 이벤트를 취소하면 발행자 클래스의 이벤트 실례가null로 설정됩니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.