You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C# MediaPlayer仅播放一次文件问题求助

解决MediaPlayer重复点击按钮无法播放的问题

问题核心在于:WPF的MediaPlayer播放完音频后,Position会停在媒体的总时长位置,此时直接调用Play()不会触发播放操作,必须手动重置播放位置才能重新开始。

方案一:播放前重置位置(推荐)

修改你的点击事件方法,在调用Play()前将Position设为起始点:

public void playSou(object g, RoutedEventArgs e)
{
    Button b = g as Button;
    MediaPlayer mp = (MediaPlayer)b.Tag;
    mp.Position = TimeSpan.Zero; // 重置到音频开头
    mp.Play();
}

方案二:每次点击重新打开媒体(不推荐,有性能开销)

如果重置位置无效,也可以每次点击时重新打开音频文件,确保媒体处于可播放状态:

public void playSou(object g, RoutedEventArgs e)
{
    Button b = g as Button;
    MediaPlayer mp = (MediaPlayer)b.Tag;
    mp.Open(new Uri(myFile)); // 重新打开目标文件
    mp.Play();
}

额外优化(循环播放场景)

如果需要音频播放结束后自动循环,可以订阅MediaEnded事件,自动重置位置:

// 初始化MediaPlayer时绑定事件
mp.MediaEnded += (sender, args) => 
{
    var player = sender as MediaPlayer;
    player.Position = TimeSpan.Zero;
    player.Play();
};

内容的提问来源于stack exchange,提问作者Marlon Davies

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 17:06:20