各ページ リクエストで整数シーケンスを作成したい
これが私のコードです:
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
新しいソリューションはスレッド セーフですか? 代替ソリューションは大歓迎です!