私はUI、winformを持っています。タブコントロール、たくさんのテキストボックス(タブ全体に最小25個)コンボボックス、チェックボックス、ボタン、ラベル、ツリーコントロールなどのコントロールがたくさんあります。
これらのコントロールのほとんどは、textchanged、click などの ctrl イベントに登録されます。メモリ不足の例外が発生しているため、クエリはほとんどありません。
質問:
- フォームの dispose 関数では、この ctrl のそれぞれを dispose する必要があります。
- textchanged、クリック イベントなどの ctrls によってサブスクライブされたイベントは、dispose 関数で登録解除する必要がありますか? コード スニペットがデザイナーに追加されるため、GC は ctrls に追加されたイベントの登録解除を処理しますか?
いくつかの情報: アプリケーションは、2GB の RAM マシンで最大 100 回の反復の安定性テストにかけられました。反復ごとに同じテストを実行します(ダイアログの起動、クリックの実行、値の編集、および終了)。それはほぼ8時間実行されていました。45回目または46回目の繰り返しで、この例外がスローされました。はい、ダイアログ内のすべてのコントロールには、1 つのイベントまたはその他のイベントが登録されています。いくつかのテキストが変更された いくつかのチェックされた変更またはクリックなど