J'essaie d'adapter un programme existant (écrit en interne) pour utiliser une bibliothèque différente de celle utilisée à l'origine. J'ai extrait la majeure partie du code spécifique à la bibliothèque (semble être la partie la plus facile). Le problème est que l'ancienne bibliothèque exécuterait un appel en utilisant une méthode de blocage, et notre programme interne attend une méthode de blocage, mais la nouvelle bibliothèque utilise une méthode asynchrone.Meilleure pratique: bloquer l'exécution en attendant une méthode asynchrone
Je me demandais quelle serait la meilleure pratique pour attendre l'achèvement de l'opération asynchrone. Ma première pensée a été d'avoir un drapeau booléen appelé terminé, et de tourner dans une boucle while jusqu'à la fin == true.
Je tiens à souligner qu'il s'agit d'une preuve de concept rapide que j'essaie de mettre en place pour mon intervenant, et si les intervenants approuvent le projet, je vais réécrire la partie incriminée de notre programme. Mais pour le moment, je dois juste attendre que le bloc de la fonction appelant la méthode async jusqu'à ce que l'appel asynchrone est terminé
cela fonctionnerait à moins que la méthode async soit rapide et que la release soit appelée avant waitone ... –
J'ai légèrement changé la réponse. Je pense que si le sémaphore est libéré avant l'appel de la méthode "WaitOne", il ne bloquera pas – John
'AutoResetEvent' aurait plus de sens que' Semaphore'. En outre, cet exemple devra être modifié si vous souhaitez prendre en compte plusieurs appels simultanés dans un environnement multithread. – Thorarin