如何锁定通过不同线程访问的int

时间:2015-08-12 15:25:28

标签: c# multithreading int

我有这个变量:

private static volatile int _filesInUse;

这个变量是通过不同的线程访问的,我想在它的值发生变化时锁定它,以便更新关于当前状态的UI。

3 个答案:

答案 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
}