Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么对waveOutGetPosition的调用挂起?_C#_Audio_Windows Vista - Fatal编程技术网

C# 为什么对waveOutGetPosition的调用挂起?

C# 为什么对waveOutGetPosition的调用挂起?,c#,audio,windows-vista,C#,Audio,Windows Vista,我正在使用winmm.dllAPI方法waveOutGetPosition获取WAV文件播放的当前位置。有时,这对我来说就像预期的那样,但最终其中一个调用永远不会返回,我的应用程序也会锁定 我发现有几个用户遇到了同样的问题: 但没有解决办法。以前有人遇到过这个问题吗 更新:我能够创建一个示例应用程序,可靠地再现问题: 但是仍然没有修复它。你能将调用锁定在自己的线程中,并在确定的时间后将其杀死,而不是让它挂起你的应用程序吗?不会真正解决问题,但至少可以让您继续。解决方案是使用MessageWi

我正在使用
winmm.dll
API方法
waveOutGetPosition
获取WAV文件播放的当前位置。有时,这对我来说就像预期的那样,但最终其中一个调用永远不会返回,我的应用程序也会锁定

我发现有几个用户遇到了同样的问题:

但没有解决办法。以前有人遇到过这个问题吗

更新:我能够创建一个示例应用程序,可靠地再现问题:


但是仍然没有修复它。

你能将调用锁定在自己的线程中,并在确定的时间后将其杀死,而不是让它挂起你的应用程序吗?不会真正解决问题,但至少可以让您继续。

解决方案是使用MessageWindow而不是回调-MessageWindow允许waveOutGetPosition成功返回而不会死锁。

如果您可以重现该行为,我建议联系Microsoft支持部门,提交一个bug,看看是否有可用的修复方法。@Mattias:如果没有人可以修复它,我会试试。