本文整理汇总了C#中Lucene.Net.Store.Directory.GetLockID方法的典型用法代码示例。如果您正苦于以下问题:C# Directory.GetLockID方法的具体用法?C# Directory.GetLockID怎么用?C# Directory.GetLockID使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Lucene.Net.Store.Directory
的用法示例。
在下文中一共展示了Directory.GetLockID方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: CloseStaleReaders
public int CloseStaleReaders(Directory dir, TimeSpan ts)
{
lock (_locker)
{
var now = DateTime.Now;
var readersForDir = _oldReaders.Where(x => x.Item1.Directory().GetLockID() == dir.GetLockID()).ToList();
var newest = readersForDir.OrderByDescending(x => x.Item2).FirstOrDefault();
readersForDir.Remove(newest);
var stale = readersForDir.Where(x => now - x.Item2 >= ts).ToArray();
foreach (var reader in stale)
{
//close reader and remove from list
try
{
reader.Item1.Close();
}
catch (AlreadyClosedException)
{
//if this happens, more than one instance has decreased referenced, this could occur if this
//somehow gets called in conjuction with the shutdown code or manually, etc...
}
_oldReaders.Remove(reader);
}
return stale.Length;
}
}
示例2: CloseAllReaders
public int CloseAllReaders(Directory dir)
{
lock (_locker)
{
var readersForDir = _oldReaders.Where(x => x.Item1.Directory().GetLockID() == dir.GetLockID()).ToArray();
foreach (var reader in readersForDir)
{
//close reader and remove from list
try
{
reader.Item1.Close();
}
catch (AlreadyClosedException)
{
//if this happens, more than one instance has decreased referenced, this could occur if this
//somehow gets called in conjuction with the shutdown code or manually, etc...
}
_oldReaders.Remove(reader);
}
return readersForDir.Length;
}
}