IClosableNotifier インターフェイス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
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
イベントが発生し、メモリ内に保持されている厳密な参照がない場合、の送信者 およびイベント引数パラメーターは、TypedEventHandler の null
されます。 このケースをサポートするために、これらのイベントは 送信者の またはイベント引数を提供せず、ClosableNotifierHandler はパラメーターを受け取りません。 イベントのサブスクライバーは、サブスクライブしている WinRT オブジェクトを知る役割を担います。
プロパティ
IsClosed |
オブジェクトが閉じている (破棄される) かどうかを示す値を取得します。 |
イベント
Closed |
オブジェクトが閉じられたことをアプリに通知するために、FrameworkClosed イベントの後に、オブジェクトが閉じられた (破棄された) ときに発生します。 |
FrameworkClosed |
オブジェクトが閉じられたことをフレームワーク (XAML など) に通知するために、Closed イベントの前にオブジェクトが閉じられた (破棄された) ときに発生します。 |