FrIEnd Class Project Private _Status As Integer Public Property Status As Integer Get Return Me._Status End Get Set(ByVal value As Integer) Interlocked.Exchange(Me._Status,value) End Set End PropertyEnd Class
这个声明是否有任何简写形式.
实际上,这是在类内部使用的backgrounDWorker,并由另一个类在外部访问.
要明白速记的含义是什么.我举个例子:
以下gode是速记
SyncLock lock z = 1End SyncLock
以下详细代码
Dim obj As Object = Me.lockObjectFlowControl.CheckForSyncLockOnValueType(obj)Dim flag As Boolean = FalseTry Monitor.Enter(obj,flag) Me.z = 1Finally If (flag) Then Monitor.[Exit](obj) End IfEnd Try解决方法 正如Holterman所提到的,Interlocked.Exchange提供的唯一好处是内存障碍. (Int32赋值在.NET中始终是原子的,并且您将丢弃返回值.)
如果源代码是用C#编写的,那么它最初可能包含volatile关键字,这也会产生内存屏障.
private volatile int _Status;public int Status{ get { return _Status; } set { _Status = value; }}
但是,这应该导致在getter中生成内存屏障.
总结以上是内存溢出为你收集整理的.net – 属性设置器中Interlocked.Exchange的简写全部内容,希望文章能够帮你解决.net – 属性设置器中Interlocked.Exchange的简写所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)