2009-07-08 16 views
11

Mögliche Duplizieren:
How do I specify the equivalent of volatile in VB.net?Volatile Äquivalent in VB.NET

Was ist das VB.NET Schlüsselwort Äquivalent von C# "flüchtig"?

Wenn es kein Schlüsselwort gibt, welcher Mechanismus ist das Äquivalent?

+2

Kann ich fragen, warum Sie wissen wollen? Die meisten Leute versuchen nicht, lock-freie Multithread-Algorithmen in VB zu schreiben. –

+0

@EricLippert, entschuldige, wenn ich unhöflich höre, aber warum fragst du "Warum willst du es wissen"? Wenn die meisten Menschen nicht nach den Sternen greifen wollen - sollten die Wenigen, die es versuchen, aufhören? Ich persönlich entwickle viel in VB und kann sagen, dass diese Sprache den meisten Sprachen weit voraus ist. – Dima

+2

@Dima: Weil ich damals im Designteam für C# war und täglich Kontakt mit dem VB-Designteam hatte. Indem ich Feedback von echten Benutzern mit echten Bedürfnissen direkt einhole und feststelle, welche Bedürfnisse in ihrem Kontext liegen, kann ich diese Benutzerbedürfnisse kompetenter und genauer meinen Kollegen in den Designteams für beide Sprachen mitteilen. Ich freue mich zu hören, dass VB Ihre Bedürfnisse erfüllt; es ist eine entzückende und skurrile Sprache. –

Antwort

12

Es gibt keine gleichwertige zu C# 's flüchtige Schlüsselwort in VB.NET. Volatile in C# stellt lediglich sicher, dass der Compiler die Dinge beim Generieren der IL anders verarbeitet, aber der VB.NET-Compiler hat diese Option nicht.

Sie können auf diese Weise um ihn herum arbeiten (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

Abhängig davon, welche Variablentyp verwenden Sie i

System.Threading.Thread.VolatileRead mit würde vorschlagen()

System.Threading.Thread.VolatileWrite()

Auch System.Threading.Interlocked enthält einige nette Sachen ...

Verwandte Themen