MediaElement当前状态关闭
本文关键字:状态 MediaElement | 更新日期: 2023-09-27 18:16:41
我的应用程序已经工作了好几个月,但现在它不工作了。当我处理异常时,我得到:MediaElement.currentState is Closed
。并得到结果:"媒体播放器不可用"。这是我的代码:
if (mediaElement.CurrentState.Equals(MediaElementState.Playing)) {
mediaElement.Stop();
}
else {
try {
SpeechSynthesisStream stream = await sin.SynthesizeTextToStreamAsync(texto);
// Send the stream to the media object.
mediaElement.AutoPlay = true;
mediaElement.SetSource(stream, stream.ContentType);
mediaElement.Play();
}
catch (System.IO.FileNotFoundException) {
var messageDialog = new Windows.UI.Popups.MessageDialog("Media Player not avaliable");
await messageDialog.ShowAsync();
}
}
我已经在我这边测试了你的代码,我无法重现你的问题。由于你的代码没有完成,我自己添加了剩下的代码,现在可以正常运行了。请比较代码片段,看看你的代码是否有问题。您还可以在您的机器上运行下面的简单演示,它可以很好地在我的机器上运行,以查看它是否是机器环境问题。我的测试环境是windows 10 build 14393。
XAML代码 <MediaElement x:Name="mediaElement"
CurrentStateChanged="MediaElement_CurrentStateChanged" Height="200" Width="300" AutoPlay="False"/>
<Button x:Name="btntest" Click="btntest_Click" Content=" media close test"></Button>
背后的代码 private async void btntest_Click(object sender, RoutedEventArgs e)
{
if (mediaElement.CurrentState.Equals(MediaElementState.Playing))
{
mediaElement.Stop();
}
else
{
try
{
var sin = new Windows.Media.SpeechSynthesis.SpeechSynthesizer();
string texto = "hello world";
SpeechSynthesisStream stream= await sin.SynthesizeTextToStreamAsync(texto);
// Send the stream to the media object.
mediaElement.AutoPlay = true;
mediaElement.SetSource(stream, stream.ContentType);
mediaElement.Play();
}
catch (System.IO.FileNotFoundException)
{
var messageDialog = new Windows.UI.Popups.MessageDialog("Media Player not avaliable");
await messageDialog.ShowAsync();
}
}