次の方法で共有


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 プロパティを確認することだけです。

イベントの順序

Closed イベントと FrameworkClosed イベントはペアで発生します。 まず、FrameworkClosed イベントが発生してフレームワークの状態をクリーンアップする機会が与えられます。次に、Closed イベントが発生して、アプリケーション コードもクリーンアップできるようになります。

フレームワークは、オブジェクトが閉じられた後にフレームワークを呼び出すアプリケーションを準備できるように、最初のイベントに応答します。 たとえば、フレームワークが -out 内部状態を nullして、その状態を使用しようとするアプリケーションが無効な状態で動作しようとするのではなく、適切なエラーを受け取ることがあります。

WinRT オブジェクトを閉じる方法

  • WinRT オブジェクトが特定のスレッドにバインドされている場合、通常はスレッドが終了したときに閉じられます。
  • WinRT オブジェクトが IClosable.Closeを実装している場合、外部コードは明示的に閉じる要求を行うことができます。
  • オブジェクトへの最後の厳密な参照が解放されている場合は、オブジェクトを閉じることができます。

イベントの送信者または引数がない

破棄された WinRT オブジェクトで Closed イベントと FrameworkClosed イベントが発生し、メモリ内に保持されている厳密な参照がない場合、の送信者 およびイベント引数パラメーターは、TypedEventHandlernullされます。 このケースをサポートするために、これらのイベントは 送信者の またはイベント引数を提供せず、ClosableNotifierHandler はパラメーターを受け取りません。 イベントのサブスクライバーは、サブスクライブしている WinRT オブジェクトを知る役割を担います。

プロパティ

IsClosed

オブジェクトが閉じている (破棄される) かどうかを示す値を取得します。

イベント

Closed

オブジェクトが閉じられたことをアプリに通知するために、FrameworkClosed イベントの後に、オブジェクトが閉じられた (破棄された) ときに発生します。

FrameworkClosed

オブジェクトが閉じられたことをフレームワーク (XAML など) に通知するために、Closed イベントの前にオブジェクトが閉じられた (破棄された) ときに発生します。

適用対象