2009-04-23 4 views
0

Я хотел бы пропустить аудио в VB.NET.VB.NET loop through audio

Вот мой код:

While blnAlert = True 
      My.Computer.Audio.Play("C:\cat_1.wav") 
End While 

Но она замерзает приложение.

Cheers.

ответ

2

Код, который вы написали, будет проходить без конца. Условие цикла следующее:

While blnAlert = True 

Если это так, будет введен цикл. Код внутри цикла ничего не меняет, чтобы изменить это значение, и, следовательно, условие всегда будет истинным. Это означает, что цикл не закончится.

Как вы ожидаете обновления значения blnAlert? Можете ли вы опубликовать еще какой-нибудь код или дать нам немного больше проблем в этой проблеме?

EDIT OP показал, что blnAlert будет установлен в значение False с помощью нажатия кнопки

Проблема заключается в том, что, как код написан кнопка отмены не может быть нажата. Как только цикл while попадет, он не выйдет. Приложение будет заморожено, потому что, пока ваш код выполняет форму, он не может перерисовывать или обрабатывать любые пользовательские ввод. Вы должны вернуть управление в приложение, чтобы нажать кнопку отмены.

Вероятно, самый простой способ решить эту проблему - использовать таймер. Создайте таймер, и во время таймера функция звука воспроизводит звук один раз и уходит. Используйте кнопку отмены, чтобы остановить таймер и, следовательно, воспроизведение звука.

+0

blnAlert является логическим и будет установлен в ложь, когда пользователь нажимает кнопку , Окончание цикла не является проблемой. Он не будет воспроизводить звук и просто зависает. – burntsugar

+1

В My.Computer.Audio.Play есть необязательные параметры, которые означают, что все это может быть достигнуто без использования таймера, см. Мой ответ. – RobS

2

Я знаю, что ответ JaredPar будет работать и был принят, но вот другое (и более простое) решение, использующее тот факт, что My.Computer.Audio.Play также принимает необязательные параметры, включая AudioPlayMode.BackgroundLoop, который воспроизводит звук без остановки выполнения до вызова My.Computer.Audio.Stop.

Итак, начните воспроизведение звука с:

My.Computer.Audio.Play("mysound.wav", AudioPlayMode.BackgroundLoop) 

и кнопки щелкните событие:

My.Computer.Audio.Stop()