Analyse asynchrone des données avec limitation du parallélisme

C# Hard async

Tâche «Analyse asynchrone des données avec limitation du parallélisme»

Développez une application console asynchrone qui lit depuis stdin un nombre N, puis N lignes, chaque ligne contenant un nombre entier. L'application doit traiter chaque nombre à l'aide de la fonction asynchrone SimulateWorkAsync(int value), qui simule un délai (value ms) et retourne le carré du nombre. Il est nécessaire de limiter le nombre maximum de tâches simultanées à 3. Afficher les résultats dans l'ordre d'achèvement des tâches (et non dans l'ordre de saisie). Si une tâche se termine avec une exception (par exemple, lorsque value < 0), l'application doit attendre la fin de toutes les tâches, afficher "Error" et se terminer. Utilisez SemaphoreSlim pour gérer le parallélisme.

Format d\ entrée

La première ligne est un entier N (1 ≤ N ≤ 100). Ensuite, N lignes, chacune contenant un nombre entier de -10 à 10.

Format de sortie

Pour chaque résultat réussi, affichez le carré du nombre sur une ligne séparée dans l'ordre d'achèvement des tâches. Si une erreur se produit, affichez uniquement "Error".

Exemples

Exemple 1

ENTRÉE
2 5 2
SORTIE
4 25

Exemple 2

ENTRÉE
2 https://httpbin.org/status/200 https://httpbin.org/status/404 5000
SORTIE
Error

Exemple 3

ENTRÉE
2 -1 4
SORTIE
Error
main.cs