MediaElement повторно воспроизводит исключение - PullRequest
0 голосов
/ 28 ноября 2011

Я новичок в WP7 и пытаюсь воспроизводить звуки с MediaElement, когда нажимаю кнопку. Это работает, но, к сожалению, я получаю исключение "Операция не разрешена в IsolatedStorageFileStream", когда я нажимаю кнопку несколько раз, до того, как звук начнется. Как я могу избежать этого?

Метод воспроизведения:

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

1 Ответ

0 голосов
/ 28 ноября 2011

Если вы хотите, чтобы пользователь мог нажимать кнопку воспроизведения только один раз. Один из способов был бы.

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

Загрузка filestream в memorystream перед игрой должна сделать его более гибким, если вы имеете дело с потоками небольшого размера.

...