maui media element连续播放问题

dghgd 0 信誉分
2025-01-15T05:08:01.91+00:00

maui media element,在上一曲播放完后,触发mediaended事件后,再次给source添加新的值时,会直接报错
详细代码在如下链接
https://github.com/fsdfsfd/SimpleAudioPlayer
屏幕截图 2025-01-15 124212

Windows
Windows
Microsoft 操作系统系列,可跨个人计算机、平板电脑、笔记本电脑、手机、物联网设备、独立混合现实头戴显示设备、大型协作屏幕和其他设备运行。
556 个问题
.NET
.NET
基于 .NET 软件框架的 Microsoft 技术。
91 个问题
.NET MAUI
.NET MAUI
一种 Microsoft 开源框架,用于构建跨移动设备、平板电脑、台式机的原生设备应用程序。
130 个问题
0 个注释 无注释
{count} 票

1 个答案

排序依据: 非常有帮助
  1. Leon Lu (Shanghai Wicresoft Co,.Ltd.) 79,396 信誉分 Microsoft 供应商
    2025-01-16T05:19:19.39+00:00

    当您添加歌曲时,您的 SongName 将为空,您将得到空异常,我从 Sony_path 获取歌曲名称并按照以下代码进行设置。

    public void AddSong(string Song_path)
    {
        Song song = new Song();
        song.InitInstanceByTagLib(Song_path);
     
        int index = Song_path.LastIndexOf('\\');
        if (index >= 0)
        {
            song.SongName = Song_path.Substring(index + 1);       
        }
        SongList.Add(song.SongName,song);
        PlayList.Add(song.SongName);
    }
    

    然后,您添加了一个Action,并在更改歌曲时用“try/catch”包装它,您的应用程序可以正常运行,并且这个异常也消失了。

    try
    {
        // 使用闭包捕获参数
        Action updateAction = () => UpdateMediaElementSource(path, songname);
     
        // 使用 Dispatcher 延迟设置 Source 属性
        Dispatcher.Dispatch(updateAction);
    }
    catch (COMException comEx)
    {
        // 处理 COMException
        Console.WriteLine($"COMException caught: {comEx.Message}");
    }
    catch (Exception ex)
    {
        // 处理其他异常
        Console.WriteLine($"Exception caught: {ex.Message}");
    }
    

你的答案

问题作者可以将答案标记为“接受的答案”,这有助于用户了解已解决作者问题的答案。