VB.NET цикл через аудио - PullRequest
       17

VB.NET цикл через аудио

0 голосов
/ 23 апреля 2009

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

Вот мой код:

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

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

Приветствие.

Ответы [ 2 ]

2 голосов
/ 23 апреля 2009

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

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

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

и в событии нажатия кнопки:

My.Computer.Audio.Stop()
2 голосов
/ 23 апреля 2009

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

While blnAlert = True

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

Как вы ожидаете, что значение blnAlert будет обновлено? Можете ли вы опубликовать еще немного кода или дать нам немного больше информации о проблеме?

РЕДАКТИРОВАТЬ OP указывает, что blnAlert будет установлен в False при нажатии кнопки

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...