Я очень старался найти решение для следующего требования под C ++ / Visual Studio:
Все просто: для тревоги я должен проигрывать несколько звуков wav из файлов последовательно в бесконечном цикле, каждый из которых разделен небольшой задержкой:
звук-1 ... звук-2 ... звук-н ... звук-1 ... звук-2 ...
В любое время должна быть возможность отменить эту последовательность звуков.
Я пытался поиграться с PlaySound()
, но проблема в том, что я не могу правильно остановить звуки, когда они работают.
https://msdn.microsoft.com/en-us/library/Dd743680(v=VS.85).aspx
Когда звук воспроизводится асинхронно по флагу, его можно остановить, указав значение NULL для параметра 1, но тогда я не могу знать, когда звук-1 заканчивается до запуска звука-2. Фактически, запуск звука-2 будет прерывать звук-1.
В режиме синхронный прерывание звука невозможно.
Чтобы иметь возможность отменять звуки, я пытался поместить PlaySound в Poco::Thread
, но как отменить тему? Отмена потока не предусмотрена ... Использование Poco::Task
instaed дает unhandled exception at 0x01002d62 ...
при отмене, поэтому оно также не работает.
Что было бы предпочтительным решением для этого?
Есть ли лучшее решение?
Спасибо!