Летучий эквивалент в VB.NET
Возможный дубликат:
Как мне указать эквивалент volatile в VB.net?
Что такое ключевое слово VB.NET, эквивалентное C# "volatile"?
Если нет ключевого слова, какой механизм эквивалентен?
3 ответа
В VB.NET нет эквивалента изменчивому ключевому слову C#. Volatile в C# просто гарантирует, что компилятор обрабатывает вещи по-разному при генерации 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
Использование Thread.VolatileRead()
а также VolatileWrite()
методы из BCL.
http://msdn.microsoft.com/en-us/library/system.threading.thread.volatileread.aspx
В зависимости от того, какой тип переменной вы используете, я бы предложил использовать
System.Threading.Thread.VolatileRead ()
System.Threading.Thread.VolatileWrite ()
Также System.Threading.Interlocked содержит некоторые хорошие вещи...