質問

申し訳ありませんが、私は何かを明らかに不足しているんだけど、私はFlowLayoutPanelからコントロール(ユーザーコントロールのシリーズ)をクリアしようとしている場合 - (panelName).Controls.Clear();.残念ながら、これは、パネル上のオブジェクトのデストラクタを呼び出すしていないようです - 。それは万に当たるとexcecptionをスローするまで、アップユーザーがタスクマネージャの列オブジェクトがちょうど上がって保持し、

ん誰も私がここに欠けているものを知っていますか?

役に立ちましたか?

解決

未解決策が、回避策 - オブジェクトは、(メモリから、ラフな)これによって破壊されているように見えるんコード:

while(FlowLayoutPanel.Controls.Count > 0)
     FlowLayoutPanel.Controls.Remove(0);

他のヒント

eftpotrmの回避策は上記まだユーザーハンドルカウント保持あなただけ手動で処分コントロールを削除した後に、それは私のためにそれを100%に固定した場合、しかし、私のために成長しています。

while (myFlowLayoutPanel.Controls.Count > 0)
{
     var controltoremove = myFlowLayoutPanel.Controls[0];
     myFlowLayoutPanel.Controls.Remove(controltoremove);
     controltoremove.Dispose();
}

.NETは、デストラクタの概念がありません。 .NETはC#でのデストラクタのように構文的に見て、「ファイナライザ」と呼ばれるものがあります。詳細については、CLRがどのように機能するかにジェフリヒターの素晴らしい本をチェックアウトする - CLRを経由してC#をに。

あなたがオブジェクトがIDisposableインターパターンを実装したい、とあなたが彼らと終わったら自分のDispose()メソッドを呼び出すことができます。

メモリを使用してみてくださいプロファイラを、(例えばアリはそれが生きているコントロールを維持されているものを教えてくれます)に。第二推測しようとしているこの種の問題は非常に難しいです。

レッドゲートは、14日にもっとこの問題ダウンタックに十分な時間が、メモリプロファイラは、長期的な価値を提供しますかどうかを決定する必要があり、尾を与えます。

市場の他のメモリプロファイラののをたくさん(例えば .NETメモリプロファイラ)しかし、私はレッド・ゲートのツールは簡単にしていることを発見した、無料のトライアルを持っているそれらのほとんど使用するので、最初にそれらを試してみてください傾向がある。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top