2016-11-07 63 views
0

我的應用程序在很多月裏一直正常工作,但現在不能正常工作。當我處理異常時,我得到:MediaElement.currentState is Closed。並得到結果:「媒體播放器不可用」。這我的代碼:MediaElement當前狀態關閉非理由

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

回答

1

我測試了你的代碼在我身邊,我不能再現你的問題。由於您的代碼沒有完成,我自己添加了剩餘代碼,現在可以成功運行。請比較代碼片段,以查找代碼是否有問題。您也可以在您的機器上運行以下簡單的演示程序,以便在我的機器上正常運行,以查看它是否是機器環境問題。我的測試環境是Windows 10的構建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(); 
      } 
     } 
代碼