Как обрабатывать MMException от NAudio после отключения микрофона во время записи - PullRequest
1 голос
/ 20 октября 2011

Я работаю над программой Windows Forms, которая прослушивает все активные устройства ввода звука, используя NAudio. Проблема, с которой я сталкиваюсь, заключается в том, что если в начале записи подключено только одно устройство ввода звука, а затем удаляется до окончания записи, то я получил необработанный MMException с MMResult из MMResult.NoDriver.

Поскольку я использую метод WaveIn.StartRecording(), который работает в другом потоке, я предполагаю, исключение генерируется в метод main без перехвата.

Есть ли у кого-нибудь предложения о том, что я могу сделать, чтобы безопасно продолжить запись или, возможно, остановить запись, пока устройство не будет снова подключено?

1 Ответ

1 голос
/ 31 октября 2011

Существует решение в обсуждении NAudio .

Вам нужно получить исправление исходного кода (он же fork) из здесь и скомпилировать его (только x86) для себя.

bobasaurus: Это просто изменяет часть кода обратного вызова wavein, чтобы полностью остановить запись, если у устройства записи есть проблема (например, отключение от вытягивания кабеля на некоторых коробках Win 7). Это вызовет событие RecordingStopped, когда это произойдет. Я реализовал этот обработчик событий в графическом контроллере моей основной программы, который, если он обнаружит, что WaveIn.DeviceCount равен 0, запустит таймер, который будет опрашивать WaveIn.DeviceCount, пока он не вернется выше 0, и перезапустить запись.

...