3

プロジェクトとクラス ライブラリがあります。

ストレージ アイテムを更新するには、クラス ライブラリが必要です。私のプロジェクトでは、これらのストレージ アイテムにアクセスする必要があります。lock異なるプロジェクトの同じインスタンスで使用できますか? これは機能しますか?

4

1 に答える 1

6

本当に同じオブジェクトをロックしている限り、それはまったく問題なく機能するはずです。異なる AppDomains を使用している場合、事態はより複雑になりますが、プロジェクト A とプロジェクト B の両方が、もともとプロジェクト C に由来するオブジェクトをロックしているだけであれば、問題にはなりません。

少なくとも、技術的にはうまくいくでしょう。個人的には、通常、ロックをできるだけ非公開にすることを好みます。たとえば、ロックをオンにしたり、他の場所から参照を取得したりするのではなく、ロックを唯一の目的thisするオブジェクトを作成することがよくあります。

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

    ...
}

そうすれば、そのロックを取得できる唯一のコードは のコードであることがわかりますFoo。これにより、ロックの推論が容易になります。

于 2012-08-11T11:43:51.737 に答える