在我的多线程应用程序中,我使用了一些可以同时被多个实例更改的变量。这很奇怪,但它工作正常,没有任何问题……但我当然需要让它成为线程安全的。我刚开始使用锁,所以我会感谢您的建议:
当客户端连接时,会创建类 Client,其中每个客户端都有自己的“A”变量。
有时,客户端调用这样的方法:
Client selectedClient SelectOtherClientClassByID(sentID);
selectedClient.A=5;
直到现在,即使 5 个类同时执行(线程池)也没有问题,但我在考虑向 A 属性添加锁怎么样?
喜欢:
A {
get { return mA; }
set {
// use lock here for settting A to some value
}
}
可以吗?
最佳答案
你需要在 get 和 set 中使用锁。这个锁必须是同一个对象。例如:
private object mylock = new object();
public int A {
get {
int result;
lock(mylock) {
result = mA;
}
return result;
}
set {
lock(mylock) {
mA = value;
}
}
}
关于c# - 锁定属性,好方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1612406/