我正在为 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