2009-04-23 6 views
0

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.

Répondre

2

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.

+0

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

+1

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

2

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() 
Questions connexes