1

私はこの小さなC#コードを持っています

//Creates a MediaPlayer with the sound you want to play
    public static void PlaySound (Stream wavStream, string wavName, bool loop)
    {
        //Get the path for the file to play
        var path = GetFilePath(wavStream, wavName);

        var player = new MediaPlayer();
        player.Open(new Uri(path));
        player.MediaEnded += loop ? new EventHandler(MediaEndedLoop) : new EventHandler(MediaEndedDestroy);
        player.Play();

        players.Add(player);
        names.Add(wavName);
    }

理由はわかりませんが、MediaEndedLoop と MediaEndedDestroy が呼び出されることはありません

何か案が?

4

2 に答える 2

1

私もこの問題を抱えていました。解決策は見つかりませんでしたが、メディアがループしているアプリケーションまたはスレッドに存在する場合の回避策を見つけました。特定のポイントの後、手動で位置をリセットすることができます。

if (media.Position > new TimeSpan(0, 2, 25))
      {
          media.Position = new TimeSpan(0, 0, 00);
      }

それが今のところ私が提供できる最高のものです。

于 2016-09-18T16:19:41.647 に答える