Нужен способ получать разные фото из многопотока

Demiz

Client
Регистрация
19.12.2017
Сообщения
145
Благодарностей
69
Баллы
28
Подскажи решение проблемы: идет работа с 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} не существует.");
        }
    }
 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
19 458
Благодарностей
8 682
Баллы
113
Подскажите какое есть решение,
Как вариант, при старте каждого потока брать рандомное фото из локальной папки ПК и отправлять в расшаренную папку и далее работать с этим фото в потоке.
 

Demiz

Client
Регистрация
19.12.2017
Сообщения
145
Благодарностей
69
Баллы
28
Как вариант, при старте каждого потока брать рандомное фото из локальной папки ПК и отправлять в расшаренную папку и далее работать с этим фото в потоке.
Мы же можем расшарить только папку, в которой будут файлы с фото, не совсем понял как нам определенное фото взять и с ним работать?
 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
19 458
Благодарностей
8 682
Баллы
113
Мы же можем расшарить только папку, в которой будут файлы с фото, не совсем понял как нам определенное фото взять и с ним работать?
Просто берем фото и кладем в расшаренную папку.
В устройстве работаем с этим фото.
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)