Асинхронный анализ данных с ограничением параллелизма
C#
Сложный
async
Задача «Асинхронный анализ данных с ограничением параллелизма»
Разработайте асинхронное консольное приложение, которое читает из stdin число N, затем N строк, каждая строка содержит целое число. Приложение должно обработать каждое число с помощью асинхронной функции SimulateWorkAsync(int value), которая имитирует задержку (value мс) и возвращает квадрат числа. Необходимо ограничить максимальное количество одновременно выполняемых задач до 3. Вывести результаты в порядке завершения задач (не в порядке ввода). Если какая-либо задача завершилась с исключением (например, при value < 0), приложение должно дождаться завершения всех задач и вывести "Error" и завершиться. Используйте SemaphoreSlim для управления параллелизмом.
Формат ввода
Первая строка — целое число N (1 ≤ N ≤ 100). Затем N строк, каждая содержит целое число от -10 до 10.
Формат вывода
Для каждого успешного результата выведите квадрат числа на отдельной строке в порядке завершения задач. Если возникла ошибка, выведите только "Error".
Примеры
Пример 1
ВВОД
2
5
2
ВЫВОД
4
25
Пример 2
ВВОД
2
https://httpbin.org/status/200
https://httpbin.org/status/404
5000
ВЫВОД
Error
Пример 3
ВВОД
2
-1
4
ВЫВОД
Error
main.cs