如何锁定通过不同线程访问的对象
本文关键字:线程 访问 对象 何锁定 锁定 | 更新日期: 2023-09-27 18:07:28
我有这样一个变量:
private static volatile int _filesInUse;
这个变量是通过不同的线程访问的,我想在它的值发生变化时锁定它,以便更新我的UI关于当前状态
对于更改整数,您有Interlocked.Increment
。您只需将其与ref
关键字一起传递:
int result = Interlocked.Increment(ref _filesInUse);
使用result
一路上(它不会得到更新时,_filesInUse
做,所以它是保存在您的过程中使用它)。
您应该提供一个方法来更改同步的值:
[MethodImpl(MethodImplOptions.Synchronized)]
public void SomeMethod() {/* code */}
为什么不使用[lock][1]
object lockObject = new object();
lock(lockObject)
{
// do your value changing stuff
}