3

我有一个项目和一个类库。

我需要类库来更新存储项目。在我的项目中,我需要访问这些存储项目。我可以lock在不同项目的同一个实例上使用它吗?

4

1 回答 1

6

只要您锁定的是真正相同的对象,那绝对可以正常工作。如果您使用不同的 AppDomain,事情会变得更加复杂,但如果只是(比如说)项目 A 和项目 B 都锁定了最初来自项目 C 的对象,那应该不是问题。

至少,它会在技术上起作用。就我个人而言,我通常更喜欢尽可能地保持锁的私密性——例如,this我通常会创建一个唯一目的是锁定的对象,而不是锁定或从其他地方获得的引用:

public class Foo
{
    private readonly object mutex = new object();

    ...
}

这样我就知道唯一可以获得该锁的代码是Foo. 它使锁更容易推理。

于 2012-08-11T11:43:51.737 回答