WPFのWindow.Close()でIDisposableリソースを解放する実装例

コンピュータ

コードビハインドでウィンドウが閉じられたタイミングでDispose()が必要なプロパティを解放するサンプルコード

using System;
using System.Windows;
using System.Diagnostics;

namespace DisposeOnCloseSample
{
    public partial class MainWindow : Window
    {
        // 例: IDisposableを実装したクラスをプロパティとして持つ
        public IDisposable Resource { get; private set; }

        public MainWindow()
        {
            InitializeComponent();

            // 仮のリソースを初期化
            Resource = new SampleDisposable();

            // ClosedイベントでDisposeする
            this.Closed += OnClosed;
        }

        private void OnClosed(object? sender, EventArgs e)
        {
            // nullチェックしてDispose
            Resource?.Dispose();
        }
    }

    // サンプル用のリソースクラス
    public class SampleDisposable : IDisposable
    {
        public void Dispose()
        {
            Debug.Print("SampleDisposable.Dispose() called.");
        }
    }
}

コメント