有没有办法,而不是锁定一个对象,向访问它的人显示它的临时副本?
答案 0 :(得分:2)
使用TransactionScope包装使用该对象的代码(在您的情况下是关键资源),并将IsolationLevel设置为Snapshot。
这样,任何尝试访问同一对象的人都应该在编辑对象之前看到该值,直到事务完成为止。
答案 1 :(得分:0)
如果使用volatile修饰符,则可以避免使用临时副本。
系统始终在请求点读取易失性对象的当前值,即使前一条指令要求来自同一对象的值也是如此。此外,在分配时立即写入对象的值。 volatile修饰符通常用于多个线程访问的字段,而不使用lock语句来序列化访问。使用volatile修饰符可确保一个线程检索另一个线程写入的最新值。