拥有一个对象的副本而不是一个锁定的副本

时间:2013-03-01 14:27:57

标签: c# multithreading locking copy

有没有办法,而不是锁定一个对象,向访问它的人显示它的临时副本?

2 个答案:

答案 0 :(得分:2)

使用TransactionScope包装使用该对象的代码(在您的情况下是关键资源),并将IsolationLevel设置为Snapshot。

这样,任何尝试访问同一对象的人都应该在编辑对象之前看到该值,直到事务完成为止。

答案 1 :(得分:0)

如果使用volatile修饰符,则可以避免使用临时副本。

  

系统始终在请求点读取易失性对象的当前值,即使前一条指令要求来自同一对象的值也是如此。此外,在分配时立即写入对象的值。   volatile修饰符通常用于多个线程访问的字段,而不使用lock语句来序列化访问。使用volatile修饰符可确保一个线程检索另一个线程写入的最新值。