1

SrchItemEditDetail はフレーム
です PageSearchFieldEnumMV はページ
です 下は何度も呼び出されます

private void Revise_Helper(FieldDef SearchFieldSelected, enumAndOr paramAndOr)
{
   PageSearchFieldEnumMV nextPage = new PageSearchFieldEnumMV(SearchFieldSelected, paramAndOr);
   SrchItemEditDetail.Content = nextPage;
}

他のメソッドは、SrchItemEditDetail.Content を他のページで埋めます。

これはメモリリークですか?

もしそうなら、私はそれを修正できますか

SrchItemEditDetail.Content = null;
4

1 に答える 1

1

これはメモリリークですか?

いいえ、そうではありません。前のページはガベージ コレクションされます。

もしそうなら、私はそれを修正できますかSrchItemEditDetail.Content = null;

それはほとんど役に立ちません。いずれにせよ、以前のコンテンツにはアクセスできなくなります。

しかし、潜在的な問題があります。フレームが何らかの方法でコンテンツ ページへの他の参照を保持している場合 (たとえば、イベントを通じて)、リークが発生している可能性があります。

また、PageSearchFieldEnumMVリソースを保持しているときは、それらをタイムリーに解放していません。その場合、または安全を期すために、次を使用します。

PageSearchFieldEnumMV nextPage = new PageSearchFieldEnumMV(...);

if (SrchItemEditDetail.Content != null)
   SrchItemEditDetail.Content.Dispose();   // may need a typecast here

SrchItemEditDetail.Content = nextPage;
于 2013-08-11T14:14:29.293 に答える