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();
    }
}

MediaElement当前状态关闭

我已经在我这边测试了你的代码,我无法重现你的问题。由于你的代码没有完成,我自己添加了剩下的代码,现在可以正常运行了。请比较代码片段,看看你的代码是否有问题。您还可以在您的机器上运行下面的简单演示,它可以很好地在我的机器上运行,以查看它是否是机器环境问题。我的测试环境是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();
          }
      }