なんとなく思いついたのでメモ。
そもそもだなー、という話はあるとしても、なんかどっかでいつかこんなバグではまる気がしてならない。
こんなのに遭遇したら、絶対にわからん。
Module Module1 Private _value As Integer Sub Main() Dim t As New System.Threading.Thread(AddressOf ThreadRoutine) t.Start() _value = 100 Class1.ClassMethod(_value) End Sub Sub ThreadRoutine() System.Threading.Thread.Sleep(500) ' 処理中 _value = 300 End Sub End Module Class Class1 Public Shared Sub ClassMethod(ByRef value As Integer) value = value * 2 System.Threading.Thread.Sleep(1000) ' 処理に時間がかかった ' 200のはずでは? 100*2だよね? If (value <> 200) Then System.Console.WriteLine("200じゃないよ?") End Sub End Class