コード例 #1
0
 public MultiToken(GenericMonitor <T> sync, IEnumerable <T> keys)
 {
     foreach (var key in keys.Distinct().OrderBy(k => k))
     {
         _tokens.Add(new Token(sync, key));
     }
 }
コード例 #2
0
            public void Dispose()
            {
                if (_sync == null)
                {
                    return;
                }

                _sync.Exit(_key, _lockTaken);
                _sync = null;
            }
コード例 #3
0
 public static IDisposable Lock <T>(this GenericMonitor <T> obj, T key) => new Token <T>(obj, key);
コード例 #4
0
 public Token(GenericMonitor <T> sync, T key)
 {
     _sync      = sync;
     _key       = key;
     _lockTaken = sync.Enter(key);
 }