まだWPFを触ってない・・・

InfoQの記事「深刻なメモリリークに悩まされるWPF」より。

議論すべきメモリリークは数多く存在し、すでに公表されている。最初の問題は、一時期よく知られていたものだが、その原因に関しては大半の開発者にとって (ある程度WPFに精通している開発者でさえ) わからなかった問題である。この問題が発生する条件は、次の通りである。

1. データバインディング パスが、オブジェクトXのプロパティPを参照する。
2. オブジェクトXに、データバインディング操作の対象への直接または間接的な参照が含まれる。
3. プロパティPは、DependencyPropertyオブジェクトまたはPropertyInfoオブジェクトではなく、PropertyDescriptorオブジェクトを介してアクセスされる。

WPFやったことないからよく分からんのだけど、COMの循環参照みたいな問題を抱えてるのかな?

次の一連のメモリリークは、Microsoftのブロガー (ハンドルネームjgoldb) によるものだ。

* 最初のHWNDがXPでデストロイされる場合、CMilChannelがリークする。
* バインディングを使用して作成された各スレッドに対してShutdownListenerがリークする。
* XPにおいて、ハードウェア レンダリングを使用してWriteableBitmapを作成および破棄する場合にリークする。
* XPにおいて、ソフトウェア レンダリングのViewport 3DでVisualBrush、WBなどを使用するとリークする。

XP環境だといろいろ問題ありと・・・。
まだWPFを触ったことが無いからこういうノウハウの蓄積もできず。
VS2010になったらWPF触ろうかな(VS2008のときも同じ事を考えてた気がする)。