gpt4 book ai didi

c# - 计算机休眠后 MediaPlayer 无法播放

转载 作者:行者123 更新时间:2023-12-04 08:35:51 24 4
gpt4 key购买 nike

每次单击按钮时,以下代码都会播放一段简短的声音(一个简单的 wav 文件)。
但是在将计算机置于 sleep 状态并再次唤醒它之后 - 单击按钮时它不再播放声音(尽管正在调用事件处理程序 Button_Click)。为什么?
编码:

public partial class MainWindow : Window
{
MediaPlayer player1;

public MainWindow()
{
InitializeComponent();
player1 = new MediaPlayer();
player1.Open(new Uri("Some\\Path\\sound.wav"));
}

private void Button_Click(object sender, RoutedEventArgs e)
{
player1.Position = TimeSpan.Zero;
player1.Play();
}
}
我知道我可以 Open当用户再次登录时再次访问该文件。但这不应该被需要。

最佳答案

我在我的应用程序中所做的只是被称为 player1.Stop();当 Windows 将进入挂起模式时。
主窗口.xaml

<Window ...
Loaded="Window_Loaded">
<Grid Margin="5">
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="*" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Button Click="Button_PlayResume" >Play/Resume</Button>
<Button Click="Button_Pause" Grid.Row="1">Pause</Button>
</Grid>
</Window>
主窗口.xaml.cs
public partial class MainWindow : Window
{
MediaPlayer player1;

// Last play position before going to suspend mode
private TimeSpan LastPosition = TimeSpan.Zero;

public MainWindow()
{
InitializeComponent();
player1 = new MediaPlayer();
player1.MediaEnded += Player1_MediaEnded;
}

private void OpenMedia()
{
player1.Open(new Uri(@"M:\Sting.wav"));
//player1.Open(new Uri(@"M:\ring.wav"));
}

private void Player1_MediaEnded(object sender, EventArgs e)
{
LastPosition = TimeSpan.Zero;
}

private void Button_PlayResume(object sender, RoutedEventArgs e)
{
if (LastPosition != TimeSpan.Zero)
{
player1.Position = LastPosition; // Resume
LastPosition = TimeSpan.Zero;
}
else
{
OpenMedia();
}
player1.Play();
}

private void Button_Pause(object sender, RoutedEventArgs e)
{
player1.Pause();
LastPosition = player1.Position;
}

private void Window_Loaded(object sender, RoutedEventArgs e)
{
SystemEvents.PowerModeChanged += OnPowerModeChanged;
}

private void OnPowerModeChanged(object sender, PowerModeChangedEventArgs e)
{
if (e.Mode == PowerModes.Suspend)
{
if (player1.CanPause)
{
player1.Pause();
LastPosition = player1.Position;
}
player1.Stop();
}
}
}
屏幕截图:
enter image description here
即使在 MediaPlayer 时,这也将起作用正在玩什么。
从 sleep 模式恢复后,按播放/恢复按钮从最新位置继续播放。

关于c# - 计算机休眠后 MediaPlayer 无法播放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64805186/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com