UWP MediaPlayer意外播放音乐

问题描述 投票:0回答:2

对不起,我希望你们为我调试,但我真的不知道出了什么问题...

所以这是无法正常工作的代码:

    public static async Task SetPlaylist(ICollection<Music> playlist, Music music = null)
    {
        int index = 0;
        if (CurrentPlaylist.Count > 0)
        {
            if (music == null)
            {
                CurrentPlaylist.Clear();
                PlayBackList.Items.Clear();
            }
            else
            {
                Debug.WriteLine(music.Name);
                foreach (var item in CurrentPlaylist.ToArray())
                {
                    if (item.Equals(music)) index = 1;
                    else RemoveMusic(item);
                }
                Debug.WriteLine(new string('=', 20));
            }
        }
        foreach (var item in playlist.Skip(index))
            await AddMusic(item);
        if (!CurrentPlaylist.Contains(CurrentMusic))
            CurrentMusic = null;
    }

此功能的作用是,它将重置播放列表,并且如果指定了音乐,请不要从播放列表中删除该音乐。当您仍在播放音乐时将音乐播放器设置为随机播放模式时,此功能很有用。它只会随机播放播放列表的其余部分,而不会中断当前播放列表。

问题是,如果我在第一个foreach上设置了一个断点并逐步执行foreach,那么它将完美地运行而没有任何错误。但是,如果我仍然在第一个foreach中时按继续,则当前播放的音乐将停止并重新启动,这意味着当前播放的音乐可能会被删除并重新添加到播放列表中。

我不知道如何调试它。我只能猜测可能与async有关。即使它的行为不符合预期,它也可以提供正确的输出。

我的源代码在这里:https://github.com/SeakyLuo/SMPlayer/blob/master/SMPlayer/Helpers/MediaHelper.cs

c# uwp win-universal-app
2个回答
0
投票

我测试了您的代码,并在SetPlaylist(ICollection<Music> playlist, Music music = null)方法中发现了问题,这可能是由于频繁执行[[remove


0
投票
感谢@Faywang-MSFT,我了解了重播的原因。尽管他提供的解决方案似乎对我不利,但我非常感谢他的帮助,因此我接受了他的回答。
© www.soinside.com 2019 - 2024. All rights reserved.