На днях случилась неприятность: сломалась гарнитура. Всего-то полгода и прожила, хотя я и очень бережно отношусь к вещам :-(
Других устройств вывода звука на компе нет.
Но я посчитал, что это не так и важно: можно работать и без звука. В этом даже есть свои плюсы.
И с этой мыслью принялся тестировать проект...
Как думаете, что случилось далее?
Проект скомпилировался без проблем. Я начал проверять работу... Но в определённый момент ... произошла ошибка. Программа умерла. Я удивился.
Прошло некоторое время, пока я понял причину ошибки: если на компе нет устройств воспроизведения звука, то при попытке динамического добавления звука происходит ошибка и ... и всё :-(
Думал, что это я где-то что-то напутал. Стал проверять на чужих проектах: не во всех, но в многих проектах история со звуком повторялась...
var sndCh = new SoundChannel(); if (!sndCh) { /* Звука не будет - SoundChannel не создался */ }
Да, так, наверно, правильнее. Я-то проблемный участок кода обезвредил с помощью try...catch :-) Но, в любом случае, это было ооочень неожиданно и неприятно...
Это особенно актуально на некоторых встроенных звуковухах типа рилтэка, у них при выдёргивании гарнитуры/колонок, походу, звуковая карта пропадает из системы вообще.
Да, есть такая беда. Я тоже когда-то случайно отловил эту тему. Правда, не придал этому особого значения, исправил и забыл. Там просто надо проверять, создался ли SoundChannel.
var sndCh = new SoundChannel(); if (!sndCh) { /* Звука не будет - SoundChannel не создался */ }