private static void Unlock(string filename) { lobj o = null; if (_locks.TryGetValue(filename.ToLower(), out o)) { o.count--; if (o.count == 0) { _locks.Remove(filename.ToLower()); } } }
//static ConcurrentDictionary<string, lobj> _locks = new ConcurrentDictionary<string, lobj>(); private static lobj GetLock(string filename) { lobj o = null; if (_locks.TryGetValue(filename.ToLower(), out o)) { o.count++; return(o); } else { o = new lobj(); _locks.Add(filename.ToLower(), o); o.count++; return(o); } }