我有一个项目和一个类库。
我需要类库来更新存储项目。在我的项目中,我需要访问这些存储项目。我可以lock
在不同项目的同一个实例上使用它吗?
只要您锁定的是真正相同的对象,那绝对可以正常工作。如果您使用不同的 AppDomain,事情会变得更加复杂,但如果只是(比如说)项目 A 和项目 B 都锁定了最初来自项目 C 的对象,那应该不是问题。
至少,它会在技术上起作用。就我个人而言,我通常更喜欢尽可能地保持锁的私密性——例如,this
我通常会创建一个唯一目的是锁定的对象,而不是锁定或从其他地方获得的引用:
public class Foo
{
private readonly object mutex = new object();
...
}
这样我就知道唯一可以获得该锁的代码是Foo
. 它使锁更容易推理。