【发布时间】:2014-08-19 20:07:47
【问题描述】:
VB.Net 2010。我有一个带有计时器和其他一些东西的课程,即
Public Class PlayerClass
Inherits BodyClass
'//Variables For TCP/IP Functions
Public Property ClassInstance As UserClass
Private Account As String
Private IP As String
Private HungerTimer As Timer
Public Property LeftGrip As WeaponClass
Public Property RightGrip As WeaponClass
Public Sub New(....blahblah..)
...stuff
...
End Sub
End Class
创建类时,我会初始化所有内容(New Timer()、New WeaponClass(datahere) 等)。
我在正确处置方面遇到问题。我发现将已初始化的类设置为空并不能正确处理它,因为计时器一直在运行,而且我猜当 GC 出现时内存没有被释放。
我一直在网上阅读,但我很困惑,因为很多人都有很多答案。我是否改为调用 .Dispose() ?我是否必须停止计时器并处置它们,或者只是处置(如果那样的话)?我是否处置其他类,如“LeftGrip”和“RightGrip”?
所以主要想知道这里最好的方法是什么。公共财产/私人财产是否完全处置?
谢谢!
【问题讨论】:
-
从您的问题中我无法判断计时器是否需要在应用程序期间持续存在,或者它们是否只使用了很短的时间然后可以释放。我知道你问的是发布,但这真的是你想做的吗?
-
对你的应用程序运行代码分析,VS 会告诉你在哪里以及为什么要实现 IDispose。在大多数情况下,它只在涉及非托管资源时才重要。
-
.Net 框架中有几个 Timer 类 - 准确了解您正在使用的类可能会有所帮助。
-
抱歉,将是“导入 System.Timers”,然后将其称为“作为计时器”.. System.Timers.Timer