2015-11-26 3 views
3

Если я воспроизвожу звук с помощью SoundPlayer или NAudio, , как я могу проверить, когда играл звук? Поскольку я использую это сейчас:Утилизация звука после воспроизведения звука?

waveOut.Play(); 
waveOut.Dispose(); 

Если я проверить это, то я слышу немного «щелчок» , как и ожидалось, но я хочу услышать полную длину звука, а затем утилизировать его. Как я могу это сделать?

ответ

1

Есть событие PlaybackStopped, но это doesn't seem a real solution.

Проблема с вашим кодом: метод Play - это огонь и забыть. Он начинает воспроизведение, а затем возвращает управление обратно в вашу программу. Он работает в фоновом режиме. Вы немедленно уничтожаете его сейчас, что заставляет его остановиться.

Если нет другого способа сделать это, я предлагаю составить список waveOut экземпляров, которые вы использовали, и распоряжаться ими при закрытии и удалении формы. Таким образом, по крайней мере, память освобождается.

+0

Oke, но он падает, когда я делаю вещи в форме, поэтому я думаю, что это не имеет смысла, если я закрываю форму, в которой я располагаю всеми звуками. Но я реализую это в коде. Спасибо –

+0

Могу я использовать что-то вроде этого, может быть? SoundHOVER.Dispose(); or: SoundHOVER(). Dispose(); Я не могу понять, что это правильно. –

+0

Утилизация должна выполняться только тогда, когда звук сделан. Не на какое-то время раньше, так что вам нужно ждать. Проблема в том, что вы не можете сказать. –

Смежные вопросы