다음을 통해 공유


IClosableNotifier 인터페이스

정의

WinRT 런타임 클래스에서 구현되는 경우 개체가 닫혔습니다(삭제됨).

public interface class IClosableNotifier
/// [Windows.Foundation.Metadata.ContractVersion(Microsoft.Foundation.WindowsAppSDKContract, 65540)]
/// [Windows.Foundation.Metadata.Guid(696903995, 60687, 24185, 144, 242, 234, 197, 146, 252, 110, 106)]
struct IClosableNotifier
[Windows.Foundation.Metadata.ContractVersion(typeof(Microsoft.Foundation.WindowsAppSDKContract), 65540)]
[Windows.Foundation.Metadata.Guid(696903995, 60687, 24185, 144, 242, 234, 197, 146, 252, 110, 106)]
public interface IClosableNotifier
Public Interface IClosableNotifier
파생
특성

설명

이 인터페이스의 목적은 기본 개체가 닫혀(삭제)될 때 신뢰할 수 있는 알림을 제공하고 개체가 닫혀 있는지 확인하는 방법입니다.

일반적으로 개체는 해당 기능을 충족하기 위해 해당 WinRT 개체에 종속된 경우 다른 WinRT 개체가 닫힌 시기를 알아야 합니다. 종속된 WinRT 개체가 닫혀 있는 경우 정리 작업을 수행하거나 이벤트에서 등록을 취소할 수 있습니다.

이벤트가 발생할 때의 개체 상태

Closed 또는 FrameworkClosed 이벤트가 처리되면 기본 WinRT 개체가 이미 닫혀 있습니다. 개체의 속성(IsClosed제외) 또는 메서드에 액세스하려고 하면 이 시점 이후에 RO_E_CLOSED 반환됩니다. 허용되는 유일한 작업은 이벤트에서 구독을 취소하고 개체의 IsClosed 속성을 확인하는 것입니다.

이벤트 순서

ClosedFrameworkClosed 이벤트는 쌍으로 발생합니다. 먼저 프레임워크가 상태를 정리할 수 있는 기회를 제공하기 위해 FrameworkClosed 이벤트가 발생한 다음, Closed 이벤트가 발생하여 애플리케이션 코드도 정리할 수 있습니다.

프레임워크는 개체가 닫힌 후 애플리케이션이 프레임워크에 호출할 준비를 할 수 있도록 첫 번째 이벤트에 응답합니다. 예를 들어 프레임워크는 내부 상태를 null수 있으므로 해당 상태를 사용하려는 애플리케이션은 잘못된 상태에서 작동하지 않고 적절한 오류를 받게 됩니다.

WinRT 개체를 닫을 수 있는 가능한 방법

  • WinRT 개체가 특정 스레드에 바인딩된 경우 스레드가 종료되면 일반적으로 닫힙니다.
  • WinRT 개체가 IClosable.Close구현하는 경우 외부 코드는 명시적으로 닫을 것을 요청할 수 있습니다.
  • 개체에 대한 마지막 강력한 참조가 해제된 경우 개체를 닫을 수 있습니다.

이벤트에 대한 보낸 사람 또는 인수 없음

삭제된 WinRT 개체에서 ClosedFrameworkClosed 이벤트가 발생하고 메모리에 더 이상 강력한 참조가 없는 경우 보낸 사람TypedEventHandler 이벤트 인수 매개 변수가 null. 이 경우를 지원하기 위해 이러한 이벤트는 보낸 사람 또는 이벤트 인수를 제공하지 않으며 ClosableNotifierHandler 매개 변수를 사용하지 않습니다. 이벤트 구독자는 구독하는 WinRT 개체를 알고 있습니다.

속성

IsClosed

개체가 닫혀 있는지(삭제됨) 여부를 나타내는 값을 가져옵니다.

이벤트

Closed

개체가 닫혔을 때(삭제됨) FrameworkClosed 이벤트 후에 개체가 닫혀 있음을 앱에 알리기 위해 발생합니다.

FrameworkClosed

개체가 닫힌 경우(삭제됨) Closed 이벤트 전에 개체가 닫혀 있음을 프레임워크(예: XAML)에 알릴 때 발생합니다.

적용 대상