2011-11-27 76 views
0

我是WP7中的新手,當我按下按鈕時,我嘗試播放帶有MediaElement的聲音。 它的作品,但不幸的是,當我在聲音開始之前重複按下按鈕時,我得到「IsolatedStorageFileStream不允許操作」異常。我怎樣才能避免這種情況?MediaElement反覆播放異常

play方法:

public void Play(string filename) 
{ 
    try 
    { 
     mediaElement.Stop(); 
     mediaElement.ClearValue(MediaElement.SourceProperty); 

     using (var isf = IsolatedStorageFile.GetUserStoreForApplication()) 
     { 
      using (IsolatedStorageFileStream fileStream = isf.OpenFile(@"shared\transfers\" + filename, FileMode.Open)) 
      { 
       mediaElement.SetSource(fileStream); 
       mediaElement.IsMuted = false; 
       mediaElement.Volume = 1.0; 
      } 
     } 
    } 
    catch (Exception e) 
    { 
     MessageBox.Show(e.Message); 
    } 
} 

事件處理程序:

void me_MediaOpened(object sender, RoutedEventArgs e) 
{ 
    mediaElement.Play(); 
} 

void me_MediaEnded(object sender, RoutedEventArgs e) 
{ 
    mediaElement.ClearValue(MediaElement.SourceProperty); 
} 

回答

0

如果您想爲用戶被允許點擊播放按鈕只有一次。一種方法是。

public bool IsPlaying = false; 
    void me_MediaOpened(object sender, RoutedEventArgs e) 
     { 


    if(!IsPlaying){ 
     mediaElement.Play(); 
     IsPlaying = true; 
     } 
    } 

    void me_MediaEnded(object sender, RoutedEventArgs e) 
    { 
     if(IsPlaying){ 
     mediaElement.ClearValue(MediaElement.SourceProperty); 
     IsPlaying = false; 
     } 
} 

載入filestreammemorystream,打前,應使其更加靈活,如果你處理低尺寸流。

+0

MediaElement不允許播放「MemoryStream」。我接受你的解決方案,因爲我用一面旗子來做,正如你所提到的。不同之處在於:當開幕式開始時,我使旗幟變得真實,如果媒體開放,我就做出錯誤的選擇。 – keradi