0

全て、

モニタークラス、特に次のコードについて詳しく説明していただけますか?

if (Monitor.TryEnter(CashDrawers.lockObject))
    {
        try
        {
            // Work here                    
        }
        finally
        {
            Monitor.Exit(lockObject);
        }
    }

ありがとう、CK

4

1 に答える 1

1

これがあなたが探しているものかどうかはわかりませんが...

質問に投稿したコードは、非ブロック バージョンです。

lock(CashDrawers.LockObject)
{
     //work here
}

最初の試行でロックを取得できた場合にのみ「作業」を行うことを意味します。他の何かが既にロックを持っている場合、コードは何もしません。このコードは CashDrawers クラス内に記述されていると想定しています。それ以外の場合は、入力したのと同じオブジェクトで Monitor.Exit を実行する必要があるという転記エラーが発生する可能性があります。

一般的な同期に関する説明をお探しですか? もしそうなら、それは私が答えに書くことができる範囲を超えています。.net での一般的な同期情報については、http://www.albahari.com/threading/part2.aspxを参照してください。

于 2012-06-25T21:00:25.797 に答える