可能是重复问题:
如何在VB.net中指定与C#“volatile”等效的关键字?
VB.NET 中与 C# 的 "volatile" 关键字等效的关键字是什么?
如果没有关键字,那么有哪种机制是等效的?
可能是重复问题:
如何在VB.net中指定与C#“volatile”等效的关键字?
VB.NET 中与 C# 的 "volatile" 关键字等效的关键字是什么?
如果没有关键字,那么有哪种机制是等效的?
C#中的volatile关键字在VB.NET中没有相应的等效词。在C#中,volatile只是确保编译器在生成IL时处理事情的方式不同,但是VB.NET编译器没有此选项。
可以通过以下方法解决这个问题(摘自此博客文章):
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
使用BCL中的Thread.VolatileRead()
和VolatileWrite()
方法。
http://msdn.microsoft.com/zh-cn/library/system.threading.thread.volatileread.aspx
根据您使用的变量类型,我建议使用
System.Threading.Thread.VolatileRead()
System.Threading.Thread.VolatileWrite()
此外,System.Threading.Interlocked 包含一些不错的东西...