Random is not thread safe, hopefully this will help
Code:Public Class RandomWrap Inherits Random Private Shared lock As New Threading.AutoResetEvent(True) Public Overrides Function [Next]() As Integer RandomWrap.lock.WaitOne() Dim rv As Integer = MyBase.[Next]() RandomWrap.lock.Set() Return rv End Function Public Overrides Function [Next](maxValue As Integer) As Integer RandomWrap.lock.WaitOne() Dim rv As Integer = MyBase.[Next](maxValue) RandomWrap.lock.Set() Return rv End Function Public Overrides Function [Next](minValue As Integer, maxValue As Integer) As Integer RandomWrap.lock.WaitOne() Dim rv As Integer = MyBase.[Next](minValue, maxValue) RandomWrap.lock.Set() Return rv End Function Public Overrides Sub NextBytes(buffer() As Byte) RandomWrap.lock.WaitOne() MyBase.NextBytes(buffer) RandomWrap.lock.Set() End Sub Public Overrides Function NextDouble() As Double RandomWrap.lock.WaitOne() Dim rv As Double = MyBase.NextDouble() RandomWrap.lock.Set() Return rv End Function Protected Overrides Function Sample() As Double RandomWrap.lock.WaitOne() Dim rv As Double = MyBase.Sample RandomWrap.lock.Set() Return rv End Function End Class




Reply With Quote