AddHanlder の代わりに WithEvents 宣言を使用する場合、イベントへの登録を解除 (removeHandler) するための対応するコードは何ですか? これは、その WithEvents 変数を Nothing に設定するだけですか? これで十分ですか(フレームワークに関して)?
質問する
125 次
1 に答える
0
短い間しか表示しないフォームがあり、その後消えてしまいますが、変更に関する更新を取得するためにメイン ドメイン モデルにサブスクライブしているとします。次のようなコードがあるかもしれません:
Private WithEvents _model As WeatherModel
Public Sub New(model As WeatherModel)
_model = model
End Sub
Private Sub WeatherModel_Update(sender As Object, e As WeatherUpdateEventArgs) _
Handles _model.WeatherUpdate
'Handle updated weather conditions
End Sub
参照しているモデルは寿命が尽きてしまうため、イベント ハンドラーのサブスクライブを解除しないと、このフォームがガベージ コレクションされなくなります。その場合、イベントハンドラー_model = Nothing
で確実に実行したいと思います。FormClosing
フォームとWithEvents
オブジェクトの有効期間が同じ (つまり、同時にスコープ外になる) か、アプリケーションの有効期間全体にわたって存在する場合は、心配する必要はありません。
于 2014-01-02T20:47:43.143 に答える