Silverlight でカスタム テキスト ボックス コントロールの複数の取り消し/やり直しシステムを作成しています。私が今取り組んでいるのは、メモリ消費量の削減です。
私が抱えている問題は、使用しているスタックがメモリに保持されている時間が長すぎることです。
Count
スタックが自然に 0 になったとき、またはイベントによってスタックがクリアされたときに、スタックを完全に消去するのは比較的安価だと思います。だから私はこのコードでそれをやろうとしています.GCによってそれが拾われることを願っています...
TextHistory.Clear()
TextHistory = Nothing
しかし、それは間違いなく機能しておらず、このスタックは 50 MB 以上を保持できる可能性があります。ちなみに、TextHistory
ですStack(Of Moment)
。そして、ここにMoment
クラスがあります...
Public Class Moment
Public Text As String
Public SelectionStart As Integer
Public SelectionLength As Integer
Public Sub New(ByRef _Text As String, _SelectionStart As Integer, _SelectionLength As Integer)
Text = _Text
SelectionStart = _SelectionStart
SelectionLength = _SelectionLength
End Sub
End Class