Почему зависают вызовы waveOutGetPosition? - PullRequest
1 голос
/ 15 марта 2010

Я использую winmm.dll метод API waveOutGetPosition, чтобы получить текущую позицию воспроизведения файла WAV. Иногда это работает, как и ожидалось, но в итоге один из вызовов не возвращается, и мое приложение блокируется.

Я нашел эту тему с несколькими пользователями, которые столкнулись с такой же проблемой:

http://social.msdn.microsoft.com/Forums/en-US/windowsgeneraldevelopmentissues/thread/c6a1e80e-4a18-47e7-af11-56a89f638ad7

но нет решения. Кто-нибудь сталкивался с этой проблемой раньше?

Обновление : мне удалось создать пример приложения, которое надежно воспроизводит проблему:

Проблема с тупиками waveOutWrite и waveOutGetPosition

Тем не менее, это еще не исправлено.

Ответы [ 2 ]

0 голосов
/ 30 апреля 2011

Решение состоит в том, чтобы использовать MessageWindow вместо обратного вызова - MessageWindow позволяет waveOutGetPosition успешно возвращаться без блокировки.

0 голосов
/ 30 апреля 2010

Можете ли вы заблокировать вызов в своем собственном потоке и завершить его через определенное время вместо того, чтобы позволить ему повесить ваше приложение? На самом деле это не решит проблему, но, по крайней мере, позволит вам продолжить.

...