要在类的新实例之间持久化的静态列表

拉尔夫

我有一个 VB.NET Windows 服务,它实现了一个每分钟触发的计时器。这个计时器调用一个方法,执行。此方法创建类 MyClass 的实例,然后调用该类的方法 DoWork。在 DoWork 方法中,我检查 myStaticList 列表是否存在。如果静态列表不存在(未初始化:没有),那么我创建静态列表并存储一些参数。如果静态列表存在,那么我会读取其上的值来做一些工作。我需要在 MyClass 的新实例之间保留 myStaticList 列表。我该怎么做?在代码片段下方。

Public Class MyService

    Protected Overrides Sub OnStart(ByVal args() As String)
         Dim serviceTimer As New Timer
         serviceTimer.Interval = 60000
         AddHandler serviceTimer.Elapsed, AddressOf OnTimedEvent
         serviceTimer.Enabled = True
    End Sub

    Private Sub OnTimedEvent(ByVal source As Object, ByVal e As ElapsedEventArgs)
         Dim serviceTimer As Timer = source
         Try
             serviceTimer.Stop()
             Me.Execute()
         Catch ex As Exception
             ' Do something...
         Finally
             serviceTimer.Start()
         End Try
    End Sub

    Private Sub Execute()
        Dim p As New MyClass()
        p.DoWork()
    End Sub

End Class

Public Class MyClass
    Static myStaticList As List(Of MyAnotherClass)

    Public Sub DoWork()
       ' Do the work
       If IsNothing(myStaticList) Then
          ' Create and do something with myStaticList, store values, etc.
       Else
          ' Do something with my existing myStaticList, read values and do something
       End If
    End Sub
End Class
卢卡斯·什奇盖莱克

一种选择是将 amyStaticList作为成员存储MyService私有的非静态成员。

它将需要将填充列表的方法移动到 MyService。它将需要在 a 中实例化列表,MyService并且这些列表仍可用于MyClass.

这个列表然后可以MyClass通过构造函数传递给实例,它将分配一个列表。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章