예제 #1
0
            private void WatchThread()
            {
                for (; ;)
                {
                    long lockSize = 0;

                    foreach (var hash in new HashSet <Hash>(_infos.ToArray().Select(n => n.Hashes).Extract()))
                    {
                        lockSize += _cacheManager.GetLength(hash);
                    }

                    if (_cacheManager.Size * ((double)this.ProtectedPercentage / 100) > lockSize)
                    {
                        break;
                    }

                    var sortedList = _infos.ToArray().ToList();
                    sortedList.Sort((x, y) => x.CreationTime.CompareTo(y.CreationTime));

                    var info = sortedList.FirstOrDefault();
                    if (info == null)
                    {
                        break;
                    }

                    foreach (var hash in info.Hashes)
                    {
                        _cacheManager.Unlock(hash);
                    }

                    _infos.Remove(info);
                }
            }
예제 #2
0
파일: Miner.cs 프로젝트: tonycody/Library
 public void Cancel()
 {
     foreach (var process in _processes.ToArray())
     {
         try
         {
             process.Kill();
         }
         catch (Exception)
         {
         }
     }
 }
예제 #3
0
 public IEnumerable <SearchListViewItemInfo> GetSearchListViewItemInfos()
 {
     return(_cacheSearchListViewItemInfos.ToArray());
 }