public List <RowBase> GetListBases(MainWindow main) { List <RowBase> list = new List <RowBase>(); string pathIbases = DefaultValues.GetNameFileIbases(_nameUser); string pathUserDir = DefaultValues.GetPathUserDir(_nameUser); try { new DirectoryInfo(pathUserDir).GetAccessControl(); if (File.Exists(pathIbases)) { ReadFileIbases(list, pathIbases); RemoveIncorrectRows(list); } else { throw new DirectoryNotFoundException(pathIbases); } } catch (DirectoryNotFoundException) { Dialog.ShowMessage($"Файл списка баз не существует."); } catch (UnauthorizedAccessException) { if (_tryGetAccess) { Dialog.ShowMessage($"Нет доступа к файлу списка баз: " + $"\n{pathIbases}"); } else if (Dialog.DialogQuestion($"Нет доступа к файлу списка баз: " + $"\n{pathIbases}" + $"\nПопробовать получить доступ?")) { _tryGetAccess = true; Access.TryGetAccess(pathUserDir); Thread.Sleep(1 * 1000); main.Activate(); Dialog.ShowMessage("Вы уже должны были получить запрос на получение доступа в каталог выбранного пользователя." + "\nПосле закрытия этого окна будет выполнена попытка чтения данных."); GetListBases(main); //Process process = new Access(pathUserDir).TryGetAccess(); //if (process != null) //{ // process.EnableRaisingEvents = true; // process.Exited += Process_Exited; // process.Start(); // process.WaitForExit(); // Dialog.ShowMessage("Вы уже должны были получить запрос на получение доступа." + // "\nПосле закрытия каталога будет выполнен повторный запрос на получение данных."); //} //else // GetListBases(); } } catch (Exception ex) { Dialog.ShowMessage("Произошла непредвиденная ошибка."); Dialog.ShowMessage(ex.Message); } return(list); }
private void ReadCachePath(ref IEnumerable <RowBase> list, ref ulong totalByte, ref string total, List <RowBase> listCache, string path, TypeCache typeCache) { try { DirectoryInfo[] dirCache = new DirectoryInfo(path).GetDirectories(); foreach (DirectoryInfo dir in dirCache) { string nameDir = dir.Name; if (nameDir.Count(f => f == '-') == 4) { RowBase rowBase = listCache.FirstOrDefault(f => f.ID == nameDir); if (rowBase == null) { rowBase = new RowBase() { Name = _nameRowIsNotList, ID = nameDir, DateCreate = DateTime.MaxValue }; listCache.Add(rowBase); } DirFile dirFile = new DirFile(dir.FullName); ulong sizeByte = dirFile.GetDirSize(); Tuple <DateTime, DateTime> dateCreateEdit = dirFile.GetDateCreateEdited(); rowBase.DateCreate = dirFile.CompareDatePlus(rowBase.DateCreate, dateCreateEdit.Item1); rowBase.DateEdit = dirFile.CompareDateMinus(rowBase.DateEdit, dateCreateEdit.Item2); string size = new DirFile().GetSizeFormat(sizeByte); if (typeCache == TypeCache.Local) { rowBase.PathCacheLocal = dir.FullName; rowBase.SizeLocal = size; } else if (typeCache == TypeCache.AppData) { rowBase.PathCacheAppData = dir.FullName; rowBase.SizeAppData = size; } rowBase.SizeByte += sizeByte; totalByte += sizeByte; } } RemoveIncorrectRows(listCache); total = new DirFile().GetSizeFormat(totalByte); listCache.Sort(); list = listCache; } catch (DirectoryNotFoundException) { Dialog.ShowMessage($"Не удалось получить данные с каталога: \n{path}\nКаталог кеша не существует."); } catch (UnauthorizedAccessException) { Dialog.ShowMessage($"Нет доступа к каталогу кеша: \n{path}"); } catch (Exception ex) { Dialog.ShowMessage("Произошла непредвиденная ошибка."); Dialog.ShowMessage(ex.Message); } }