題記の通りなのですが、一時ハマったので共有します。 正確には、「バックグラウンド スレッドで DispatcherObject を作るとメモリリークする」ですね。 例えば、バックグラウンドで画像をダウンロードして加工したり。 もしくは Grid や TextBlock といった UI 要素を使って、サムネイルやら何やらの画像を生成したいときとか。 ImageSource は Freezable なので、バックグラウンドで画像を作って Freeze() してしまえば、UI スレッドに渡してもだいじょうぶ。 なるべく UI スレッドの負担を減らしたいのです。 ということで、以下のようなコードを書いてみます。 サンプルなので Console アプリですが、PresentationCore, PresentationFramework, WindowsBase, System.Xaml あたりを参
![バックグラウンド スレッドで UI 要素を作るとメモリリークする (WPF) | grabacr.nét](https://cdn-ak-scissors.b.st-hatena.com/image/square/ff6c5d49de3bf841162271337a919f985e96ba5f/height=288;version=1;width=512/http%3A%2F%2Fgrabacr.net%2Fwp-content%2Fuploads%2F2014%2F05%2FSS140518043555KD.png)