Как реализовать асинхронное создание файлов?

Задача очень простая, перебираются графические файлы в папке и для каждого файла создается его миниатюры для нескольких размеров. Задача выполняется продолжительное время. Как ее можно переписать с помощью асинхронного подхода и имеет ли это смысл?

public void MakeCopys(string path)
{
	var di = new DirectoryInfo(path);
	foreach (var file in di.GetFiles("*.jpg"))
	{
		MakeThumbnails(file);
	}
}

public void MakeThumbnails(FileInfo file)
{
	MakeThumbnail(file, 75, file.FullName + ".lg.jpg");
	MakeThumbnail(file, 50, file.FullName + ".md.jpg");
	MakeThumbnail(file, 25, file.FullName + ".sm.jpg");
}

public void MakeThumbnail(FileInfo file, int size, string name)
{
	// код генерации уменьшенной копии
}
  • Вопрос задан
  • 247 просмотров
Пригласить эксперта
Ответы на вопрос 2
hePPer
@hePPer
а можно так

public void MakeCopys(string path)
{
var di = new DirectoryInfo(path);
Parallel.ForEach(di.GetFiles("*.jpg"),  new ParallelOptions {MaxDegreeOfParallelism = 10}, (file) =>
{
MakeThumbnails(file);
});
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы