我可以跨项目使用“锁定”吗?

时间:2012-08-11 11:42:09

标签: c# multithreading locking

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

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

1 个答案:

答案 0 :(得分:6)

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

至少,它在技术上 。我个人通常更喜欢将锁保持为私有 - 例如,不是锁定this或从其他地方获得的引用,我经常创建一个唯一目的锁定的对象:

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

    ...
}

这样我知道可以获取该锁的唯一代码是Foo中的代码。它使锁更易于推理。

相关问题