なんとなく思いついたのでメモ。
そもそもだなー、という話はあるとしても、なんかどっかでいつかこんなバグではまる気がしてならない。
こんなのに遭遇したら、絶対にわからん。
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