Je souhaite effectuer une lecture en boucle audio dans VB.NET.Boucle VB.NET via l'audio
Voici mon code:
While blnAlert = True
My.Computer.Audio.Play("C:\cat_1.wav")
End While
Mais il gèle l'application.
Cheers.
Je souhaite effectuer une lecture en boucle audio dans VB.NET.Boucle VB.NET via l'audio
Voici mon code:
While blnAlert = True
My.Computer.Audio.Play("C:\cat_1.wav")
End While
Mais il gèle l'application.
Cheers.
Le code que vous avez écrit circulera sans fin. La boucle conditionnelle est la suivante
While blnAlert = True
Si cela est vrai, la boucle sera entrée. Le code à l'intérieur de la boucle ne modifie en rien cette valeur et donc la condition sera toujours vraie. Cela signifie que la boucle ne se terminera pas.
Comment vous attendez-vous à ce que la valeur de blnAlert soit mise à jour? Pouvez-vous poster un peu plus de code ou nous donner un peu plus de contexte dans le problème?
EDIT OP a indiqué que la blnAlert sera définie sur False via le bouton presse
Le problème est que le code est écrit sur le bouton Annuler ne peut pas être pressé. Dès que la boucle while est atteinte, elle ne sortira pas. L'application va se bloquer car pendant que votre code est en cours d'exécution, le formulaire ne peut pas repeindre ou gérer les entrées de l'utilisateur. Vous devez retourner le contrôle à l'application pour appuyer sur le bouton d'annulation.
Probablement le moyen le plus simple de résoudre ce problème est d'utiliser une minuterie. Créer une minuterie et pendant la fonction de minuterie de la minuterie jouer le son une seule fois et partir. Utilisez le bouton d'annulation pour arrêter la minuterie et donc la lecture du son.
Je sais que la réponse donnée par JaredPar fonctionnera et a été acceptée, mais voici une solution différente (et plus simple) utilisant le fait que My.Computer.Audio.Play accepte également des paramètres optionnels incluant AudioPlayMode.BackgroundLoop qui joue un son sans interrompre l'exécution jusqu'à ce que My.Computer.Audio.Stop soit appelé.
Alors, commencez à jouer le son avec:
My.Computer.Audio.Play("mysound.wav", AudioPlayMode.BackgroundLoop)
et le bouton-cliquez sur l'événement:
My.Computer.Audio.Stop()
blnAlert est une valeur booléenne et il sera mis à false lorsque l'utilisateur clique sur un bouton . La fin de la boucle n'est pas le problème. Il ne jouera pas l'audio et se fige simplement. – burntsugar
Il existe des paramètres facultatifs pour My.Computer.Audio.Play qui signifient que tout cela peut être réalisé sans l'utilisation d'une minuterie, voir ma réponse. – RobS