J'écris actuellement une application de console C# qui génère un certain nombre d'URL qui pointent vers différentes images sur un site Web, puis les téléchargent en tant que flux d'octets en utilisant WebClient.DownloadDataAsync()
.Application de console terminée avant la fin de l'appel asynchrone
Mon problème est qu'une fois le premier appel asynchrone effectué, l'application console considère que le programme est terminé et se termine avant que l'appel asynchrone ne puisse retourner. En utilisant un Console.Read()
, je peux forcer la console à rester ouverte mais cela ne semble pas très bon. De plus, si l'utilisateur frappe pendant le processus (alors que la console attend une entrée), le programme se terminera.
Y a-t-il un meilleur moyen d'empêcher la fermeture de la console pendant que j'attends qu'un appel asynchrone retourne?
Modifier: les appels sont asynchrones car je fournis un indicateur d'état via la console à l'utilisateur pendant le téléchargement.
Merci! Cela a du sens et fonctionne parfaitement ... beaucoup mieux que console.read! – Andrew
Je trouve également cela utile dans le débogage des services Windows en utilisant une 'tâche 'de longue durée en tant que travailleur principal. Dans 'Program.Main()', en utilisant une directive pré-processeur comme '# DEBUG [crochet de débogage] #else [code de service normal] # endif' Et puis dans le" crochet de débogage "je viens d'ajouter un appel à' resetEvent .WaitOne() 'après' new MyService(). OnStart() '. Ensuite, vous pouvez utiliser le débogage VS pour continuer à fonctionner en mode débogage sans modifier votre code de service réel de manière significative. –
Vous êtes un génie freaking !! Je vous remercie! –