2010-03-15 91 views
1

我使用winmm.dll API方法waveOutGetPosition來獲取WAV文件播放的當前位置。有時候,這種方式對我來說可以正常工作,但最終其中一個調用永遠不會返回,並且我的應用程序會鎖定。爲什麼要調用waveOutGetPosition掛起?

我發現這個帖子誰經歷過同樣的問題,一些用戶:

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

,但沒有解決方案。有沒有人遇到過這個問題?

更新:我能夠創建可靠重現問題的樣本應用程序:

Problem with waveOutWrite and waveOutGetPosition deadlock

仍然有不固定的,雖然。

+0

如果您可以重現此行爲,我建議您聯繫Microsoft支持以提交錯誤並查看是否有可用的修復程序。 – 2010-03-16 14:18:25

+0

@Mattias:如果沒有人能解決它,我會試試。 – MusiGenesis 2010-03-16 14:42:08

回答

0

解決方案是使用MessageWindow而不是回調 - MessageWindow允許waveOutGetPosition成功返回而不會發生死鎖。

0

您可以將調用鎖定在其自己的線程中,並在確定的時間後將其終止而不是讓它掛起您的應用程序?不會真的解決問題,但它至少會讓你繼續。