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

jav*_*red 3 c# multithreading locking

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

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

Jon*_*eet 6

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

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

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

    ...
}
Run Code Online (Sandbox Code Playgroud)

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