我有这个变量:
private static volatile int _filesInUse;
这个变量是通过不同的线程访问的,我想在它的值发生变化时锁定它,以便更新关于当前状态的UI。
答案 0 :(得分:5)
要更改整数,您需要Interlocked.Increment
。您只需使用ref
关键字传递它:
int result = Interlocked.Increment(ref _filesInUse);
在整个过程中使用result
(_filesInUse
时不会更新,因此会在您的程序中保存以便使用它。)
答案 1 :(得分:0)
您应该提供一种方法来更改同步的值:
[MethodImpl(MethodImplOptions.Synchronized)]
public void SomeMethod() {/* code */}
答案 2 :(得分:0)
为什么不使用[lock][1]
object lockObject = new object();
lock(lockObject)
{
// do your value changing stuff
}