我想在每个页面请求中创建一个整数序列
这是我的代码:
Public Class Test
Inherits System.Web.UI.Page
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'integer sequence is created here
Static Sequence As Int32 = 0
Sequence = Sequence + 1
End Sub
End Class
我的要求只是使用 VB.NET 代码创建了序列,没有数据库帮助。序列必须从 1 开始并以 1 递增。我尝试通过在 Page_Load 中使用 STATIC 变量来解决这个问题,该变量可以保留序列值。但是有人告诉我,我的方法是有风险的,因为它不是线程安全的。真的吗?或者我如何为每个请求创建一个没有任何问题的序列,无论是线程安全的还是其他问题?
更新
我试图以另一种方式解决问题。但我不确定我的新解决方案的线程安全性。这是我的代码,对Singleton.Instance.Sequence
函数的调用将生成一个新的序列值:
Public NotInheritable Class Singleton
Private Sub New()
End Sub
Public Shared ReadOnly Property Instance() As Singleton
Get
Return Nested.instance
End Get
End Property
Private Class Nested
Shared Sub New()
End Sub
Friend Shared ReadOnly instance As New Singleton
End Class
Private count As Int32
Public Function Sequence() As Int32
count = count + 1
Return count
End Function
End Class
我的新解决方案线程安全吗?欢迎任何替代解决方案!