我有一个应用程序运行多个异步方法来创建使用唯一ID发送到远程主机的消息。
在两个单独的类中创建了两种类型的消息。
一个类继承自另一个类,但共享方法被遮蔽,意味着它们是不同的。
我希望ID是递增的整数。
有没有人有很好的方法来完成这项任务?
对于任何被投票的人 - 请详细说明原因?我已经查找了静态数字和类生成的id的使用,但它们没有涵盖共享方法问题。
我也知道一个共享方法能够使用静态数字但是当我的方法被遮蔽时没有用。
答案 0 :(得分:0)
我明白了。我还需要共享ID,因此它也会在所有类中共享,而不是我的两个方法独立生成ID并且知道其他当前的ID号。
代码
Public Property MessageID As Long
Private Shared NextID As Long = 0
Public Shared Function GenerateNextID() As Long
NextID += 1
Return NextID
End Function
答案 1 :(得分:0)
你需要一些单实例的方法来做到这一点。 VB.NET的自然方式是使用Module:
Module IDHelper
Private fLastID As Integer
Public Function NextMessageID() As Integer
Return Threading.Interlocked.Increment(fLastID)
End Function
End Module
这样做的好方法是使用单身人士。或者那样的东西。但是您对共享成员的最初想法也适用。问题可能在于缺少同步。
Public Class Base
Private Shared fLastID As Integer
Protected Function NextMessageID() As Integer
Return Threading.Interlocked.Increment(fLastID)
End Function
Public Function CreateMessage() As String
Return "Base message is " & NextMessageID()
End Function
End Class
Public Class Inherited
Inherits Base
Public Shadows Function CreateMessage() As String
Return "Inherited message is " & NextMessageID()
End Function
End Class
阴影功能几乎不是一个好主意。压倒是最好的方法。