Análise assíncrona de dados com limite de concorrência
C#
Hard
async
Tarefa «Análise assíncrona de dados com limite de concorrência»
Desenvolva um aplicativo de console assíncrono que lê da stdin um número N, depois N linhas, cada linha contendo um número inteiro. O aplicativo deve processar cada número usando a função assíncrona SimulateWorkAsync(int value), que simula um atraso (value ms) e retorna o quadrado do número. É necessário limitar o número máximo de tarefas executadas simultaneamente a 3. Exiba os resultados na ordem de conclusão das tarefas (não na ordem de entrada). Se alguma tarefa for concluída com exceção (por exemplo, quando value < 0), o aplicativo deve aguardar a conclusão de todas as tarefas, exibir "Error" e encerrar. Use SemaphoreSlim para gerenciar a concorrência.
Formato de Entrada
A primeira linha é um número inteiro N (1 ≤ N ≤ 100). Em seguida, N linhas, cada uma contendo um número inteiro de -10 a 10.
Formato de Saída
Para cada resultado bem-sucedido, exiba o quadrado do número em uma linha separada, na ordem de conclusão das tarefas. Se ocorrer um erro, exiba apenas "Error".
Exemplos
Exemplo 1
ENTRADA
2
5
2
SAÍDA
4
25
Exemplo 2
ENTRADA
2
https://httpbin.org/status/200
https://httpbin.org/status/404
5000
SAÍDA
Error
Exemplo 3
ENTRADA
2
-1
4
SAÍDA
Error
main.cs