0

ユーザーが WinForms メニュー項目をクリックすると、次のコードが実行されます。

 // this is an Infragistics XamRibbonWindow
var someWpfInfragisticsWindow = new SomeWpfInfragisticsWindow();
ElementHost.EnableModelessKeyboardInterop(someWpfInfragisticsWindow);
someWpfInfragisticsWindow.Show();

表示されるウィンドウは Infragistics XamRibbonWindow です。また、DataSource がビュー モデルの IEnumerable プロパティにバインドされている Infragistics XamDataGrid も含まれます。

このウィンドウには、データベースからアイテムの新しいコレクションを取得し、前述のビュー モデル プロパティを設定する「検索」ボタンも含まれています。これにより、グリッドに新しいコレクションが表示されます。

後で、ユーザーはウィンドウを閉じることができます。クローズを処理するためのコードは作成されていません。

私の質問は次のとおりです。

  1. ウィンドウを閉じると、ウィンドウとそのコントロールが破棄され、それにバインドされたコレクションが GC 対応になります (コレクションへの他の参照が存在しないと仮定して)。
  2. 私が説明したことで潜在的なメモリの問題が見られる人はいますか? おそらく、グリッドによって表示されるアイテムが更新される方法 (またはその他のもの) でしょうか?
4

1 に答える 1

1

ウィンドウへの参照を保持していない場合、ウィンドウが閉じられると、ガベージ コレクションに使用できるようになります。提供された詳細から、このアプローチではメモリの問題は見られません。

Infragistics には、ウィンドウを閉じた後も残るいくつかの静的クラスがあることに注意してください。

Infragistics コントロールを使用してメモリ リークの問題が発生し、コントロールが原因である可能性があると思われる場合は、インフラジスティックスに連絡して、リークの原因を特定するための支援を求める必要があります。フォーラムに投稿したり、ヘルプ ページからサポート ケースを送信したりするためのリンクがあります。

于 2012-05-01T21:16:52.053 に答える