-1

VB.Net で記述された大規模で複雑な Windows フォーム アプリがあります。ユーザーはいくつかのメモリの問題を経験しており、JetBrains dotTrace Profiler を使用してこれらのいくつかを解決しようとしています。

私のオブジェクトのいくつかを開いたままにしているものがまだあります。Generic.List私は 'Customer' オブジェクトを持っていInvoiceLineItemます。このアイテムは基本的に、データを表示するための読み取り専用プロパティをロードするグリッド コントロール (ConponentOne FlexGrid) にバインドされたオブジェクトです。次に例を示します。

Public Class InvoiceLineItem
Private _customer as Customer
Private _charge as Charge

Sub New(Customer as Customer, Charge as Charge)
    _customer = Customer
    _charge = Charge
End Sub

Public ReadOnly Property Name as String
    Return _customer.Name
End Property

Public ReadOnly Property ItemName as String
    Return _charge.Name
End Property

Public ReadOnly Property Amount as Decimal
    Return _charge.Amount
End Property
End Class

このオブジェクトは FlexGrid から解放されないようです。

Flexgrid は子フォーム上にあり、メイン フォームから表示されます。子フォームが閉じられると、メモリ プロファイラーはフォームがまだ参照されていることを示しています。dotTrace で [最短パス] をクリックすると、以下のパスが表示されます。

最短経路

これは、カスタマーでルート パスを持つ唯一のオブジェクトのようです。

このフォームでは、オブジェクトまたはコレクション間でカスタム イベント処理が行われておらず、何も破棄されていません。

これをさらにトラブルシューティングするにはどうすればよいですか?

4

1 に答える 1

0

問題が見つかりました。FormClosing イベントは別の場所で処理され、保存されていないデータについてテストされていました。フォームへの参照はその関数で保持され、解放されませんでした。

于 2013-03-29T08:26:59.383 に答える