首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NAudio -创建WaveOut.Stop的同步版本

NAudio -创建WaveOut.Stop的同步版本
EN

Stack Overflow用户
提问于 2017-04-30 02:52:52
回答 1查看 333关注 0票数 0

我使用WaveOut在WPF应用程序中播放音频。在手动停止播放音频后,我需要运行一些代码。将代码直接放在WaveOut.Stop()后面会导致问题,因为WaveOut.Stop()不会立即停止音频。当我将代码放在WaveOut.PlaybackStopped的事件处理程序中时,它工作得很好。

然而,我希望有一个更干净的设计,通过创建一个方法来停止音频,并只有在它真正停止后才返回,即在WaveOut.PlaybackStopped被触发后,就像这样:

代码语言:javascript
复制
WaveOut_.StopCompletely();
DoSomething();

我不想等待音频停止,因为如果我这样做,我将不得不使用await -await来修饰我的代码库。相反,我想阻止UI。我不介意阻塞,因为它的时间很短。我试过使用AutoResetEvent,就像发布的here一样,但由于某些原因,它永远无法使用。我也尝试使用TaskCompletionSource (无需等待)作为发布的here,但这会立即返回。

任何帮助都是非常感谢的。

EN

回答 1

Stack Overflow用户

发布于 2017-05-02 16:18:35

一种简单的方法是休眠,直到播放状态停止:

代码语言:javascript
复制
while (player.PlaybackState != PlaybackState.Stopped)
{
    Thread.Sleep(500);
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43699357

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档