什么是在类中读/写C#属性的线程安全方式?我是C#的新手。在Java中,我可以通过在setter/getter方法中使用“synchronized”关键字来读/写Java类成员。你能告诉我在C#中做同样事情的正确方法吗?C#中没有synchronized关键字。我应该使用java的synchronized关键字的C#版本中提到的'[MethodImpl(MethodImplOptions.Synchronized)]注释吗??或者使用Monitor.Enter(然后使用Monitor.Exit)?将Monitor.Enter/Exit(或lock-Monitor的语法糖)与privateobject_lock=newobject()字段一起使用。不要使用MethodImplOptions.Synchronized。它锁定了这个,所以其他一些代码可能会锁定同一个实例,从而导致死锁。不建议为公共类型锁定实例或类型(与Synchronized标志一样),因为您自己的代码以外的代码可以锁定公共类型和实例。这可能会导致死锁或其他同步问题。在某些情况下,volatile可能就足够了(尽管这取决于您要防范什么以及数据类型是什么):privatevolatileint_counter;publicintCounter{get{return_counter;}设置{_counter=值;}}或锁定它#regionpublicintCounter{set;得到;}私人int_counter;私有对象sync_counter=newobject();publicintCounter{set{lock(sync_counter){_counter=value;}}get{lock(sync_counter){return_counter;}}}#endregion正如Lortz所说,最好的方法是使用锁以上是C#学习教程:Whatisthethread-safewaytoread/writeC#propertiesinaclass?如果分享的内容对你有用,需要了解更多C#学习教程,希望你多多关注——publicclassThreadSafeSetters{privatebool_foo;私有对象_locker=newobject();publicboolFoo{get{lock(_locker){return_foo;}}设置{锁(_locker){_foo=值;}}}}本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
