可能重复:
How do I specify the equivalent of volatile in VB.net?
什么是C#“volatile”的VB.NET关键字?
如果没有关键字,那么等效的机制是什么?
答案 0 :(得分:13)
在VB.NET中,C#的易失性密钥没有等价。 C#中的Volatile只是确保编译器在生成IL时处理不同的事情,但VB.NET编译器没有这个选项。
您可以通过这种方式解决问题(taken from this blog post):
Function VolatileRead(Of T)(ByRef Address As T) As T
VolatileRead = Address
Threading.Thread.MemoryBarrier()
End Function
Sub VolatileWrite(Of T)(ByRef Address As T, ByVal Value As T)
Threading.Thread.MemoryBarrier()
Address = Value
End Sub
答案 1 :(得分:12)
使用BCL中的Thread.VolatileRead()
和VolatileWrite()
方法。
http://msdn.microsoft.com/en-us/library/system.threading.thread.volatileread.aspx
答案 2 :(得分:1)
根据您使用的变量类型,我建议使用
System.Threading.Thread.VolatileRead()
System.Threading.Thread.VolatileWrite()
System.Threading.Interlocked还包含一些不错的东西......