[解決済み] WPFユーザーコントロールの破棄
2022-07-23 13:06:26
質問
私は、サードパーティによって使用されることを意図しているカスタム WPF ユーザー コントロールを作成しました。私のコントロールは、使い捨てのプライベート メンバーを持っており、そのウィンドウ/アプリケーションが閉じられると、その dispose メソッドが常に呼び出されるようにしたいと思います。しかし、UserControl は使い捨てではありません。
IDisposable インターフェイスを実装し、Unloaded イベントを購読してみましたが、どちらもホスト アプリケーションが閉じたときに呼び出されません。MSDN は、Unloaded イベントがまったく発生しないかもしれないと述べています。また、ユーザーがテーマを変更した場合など、複数回トリガーされることがあります。
可能な限り、私のコントロールの消費者が特定の Dispose メソッドを呼び出すことを覚えていることに依存したくありません。
public partial class MyWpfControl : UserControl
{
SomeDisposableObject x;
// where does this code go?
void Somewhere()
{
if (x != null)
{
x.Dispose();
x = null;
}
}
}
私がこれまでに見つけた唯一の解決策は、Dispatcher の ShutdownStarted イベントを購読することです。これは妥当な方法でしょうか?
this.Dispatcher.ShutdownStarted += Dispatcher_ShutdownStarted;
どのように解決するのですか?
興味深いブログ記事はこちらです。 WPFのUserControlを破棄する(ish)
にサブスクライブすることに言及しています。 ディスパッチャー.ShutdownStarted を購読してリソースを廃棄することを述べています。
関連
-
[解決済み】「未割り当てのローカル変数を使用」とはどういう意味ですか?
-
[解決済み] [Entity Framework 4.1でエンティティに関連オブジェクトを追加する際に、エンティティオブジェクトをIEntityChangeTracker.の複数のインスタンスから参照できない。
-
[解決済み】"The ConnectionString property has not been initialized "を修正する方法
-
[解決済み】Unity3DでOnTriggerEnterが動作しない件
-
[解決済み】WPFでXamlファイルにコメントを追加する方法は?
-
[解決済み】2つ(またはそれ以上)のリストを1つに統合する(C# .NETで
-
[解決済み] ...基礎となる接続は閉じられました。予期しないエラーが受信で発生しました
-
[解決済み】エラー「必要なフォーマルパラメータに対応する引数が与えられていない」を解決する?
-
[解決済み】インデックスが範囲外でした。コレクションパラメータname:indexのサイズより小さく、非負でなければなりません。
-
[解決済み] WPFアプリケーションをプログラムで終了させるには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] メンバー '<メンバー名>' にインスタンス参照でアクセスできない
-
解決済み] Critical error detected c0000374 - C++ dll returns pointer off allocated memory to C# [解決済み] Critical error detected c0000374 - C++ dll returns pointer off allocated memory to C#.
-
[解決済み] DBNullから他の型にオブジェクトをキャストすることができない
-
[解決済み】リソースの読み込みに失敗した:ステータス500(内部サーバーエラー)のサーバーの応答)
-
[解決済み】値をNULLにすることはできません。パラメータ名:source
-
[解決済み】5.7.57 SMTP - MAIL FROMエラー時に匿名メールを送信するためにクライアントが認証されない
-
[解決済み】C#のequal to演算子でtextとvarcharのデータ型は互換性がない
-
[解決済み】2年前のMSDateを把握する【クローズド
-
[解決済み】aspNetCore 2.2.0 - AspNetCoreModuleV2 エラー
-
[解決済み】Unityでゲームオブジェクトのすべての子をループスルーして破壊する方法?