VB.Net не имеет эквивалента ключевого слова C# volatile, поэтому вам нужно вручную реализовать volatile, что обычно делается путем вызова Thread.MemoryBarrier() перед чтением и после записи. Так что что-то вроде этого эквивалентно объявлению volatile переменной C#:
''' <summary>
''' Gets a value indicating whether this instance is disposed.
''' </summary>
Public Property IsDisposed As Boolean
Get
Threading.Thread.MemoryBarrier()
Return _isDisposed
End Get
Private Set(value As Boolean)
_isDisposed = value
Threading.Thread.MemoryBarrier()
End Set
End Property
Мне интересно, нужен ли барьер памяти перед чтением, если единственное место, где я пишу переменную, - это сеттер, и там я всегда вызываю Thread.MemoryBarrier() после записи.
Могу ли я безопасно удалить Thread.MemoryBarrier() перед чтением?
Редактировать: Чтобы сделать это более ясным, я спрашиваю, могу ли я удалить Thread.MemoryBarrier() перед чтением, чтобы удалить затраты на забор памяти для каждого чтения.
Volatile
должен работать в VB.net, а классThread
содержит такие методы, какVolatileRead
- person CodesInChaos   schedule 14.01.2015