- Регистрация
- 19.12.2017
- Сообщения
- 198
- Благодарностей
- 133
- Баллы
- 43
Подскажи решение проблемы: идет работа с Zennodroid в 2 потока, перед выполнением проекта у меня идет переименование фото в директории, для того чтобы при установке фото каждый раз были уникальные названия и не нужно скролить долго вниз. Как известно, в зенодроид нужно расшарить общую папку для фото, проблема в том, что когда происходит переименование фото, то другой поток уже не может получить список с фото, т.к он уже переименован. Подскажите какое есть решение, в 1 поток работает все отлично, да знаю это костыль, но пока не нашел лучше способа получать каждый раз рандомные фото вначале галереи когда мы выбираем их.
Пока вижу способ сделать отдельные директории для каждого потока, через бд их использовать, но может есть способ получше и эффективней?
Пока вижу способ сделать отдельные директории для каждого потока, через бд их использовать, но может есть способ получше и эффективней?
Может кому нужен код для переименования фото в директории:
{
string folderPath = @"C:\Users\avatars";
if (Directory.Exists(folderPath))
{
Random random = new Random();
foreach (string filePath in Directory.GetFiles(folderPath))
{
string fileName = Path.GetFileNameWithoutExtension(filePath);
string fileExtension = Path.GetExtension(filePath);
int length = random.Next(5, 8);
const string chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
// Генерация рандомного имени от 5 до 7 символов
string randomName = new string(Enumerable.Repeat(chars, length)
.Select(s => s[random.Next(s.Length)]).ToArray());
// Формирование нового пути с рандомным именем и тем же расширением
string newFilePath = Path.Combine(folderPath, randomName + fileExtension);
// Переименование файла
File.Move(filePath, newFilePath);
project.SendInfoToLog($"Файл {filePath} переименован в {newFilePath}");
}
project.SendInfoToLog("Все файлы успешно переименованы.");
}
else
{
project.SendInfoToLog($"Указанная папка {folderPath} не существует.");
}
}