Richasy / Bili.Copilot

B站第三方 Windows 桌面客户端,使用 Windows App SDK 构建的原生高颜值应用
GNU General Public License v3.0
2.72k stars 67 forks source link

[Bug] 软件卡死 #383

Closed yimo0908 closed 1 month ago

yimo0908 commented 5 months ago

Bug 描述

使用时多次出现卡死

复现问题的步骤

· ui卡死
1. 打开应用
2. 进入动态
3. 点进任一视频
4. 设置弹幕透明度
5. 尝试取消弹幕显示
6. ui失灵
· 无法播放
1. 打开应用
2. 点进任意视频
3. 播放失败

上述两bug轮流出现

预期行为

  1. 可正常播放视频
  2. ui可正常使用

截图

image image

应用来源

其它来源

No response

系统版本

其它系统版本

Windows 11 22H2 (Build 23570)

运行设备

桌面/平板或笔记本

日志记录

applog.2024-04-21.log

备注

使用通意灵码分析了日志:

基于提供的错误日志,我分析出了以下几点问题:

多个并发的ContentDialog尝试打开:

错误信息:“某个异步操作没有正常启动。”和“Only a single ContentDialog can be open at any time.”
发生位置:Bili.Copilot.App.Forms.MainWindow.OnAppViewModelRequestShowMessageAsync
原因与建议:
在应用程序中,有多个ContentDialog试图同时显示,导致了此异常。在Windows UWP或WinUI应用中,同一时间只能有一个ContentDialog处于打开状态。
应确保在关闭当前打开的ContentDialog之后再尝试打开新的对话框,或者使用适当的同步机制来避免并发打开。
播放失败:Timeout:

错误信息:“System.Exception: 播放失败: Timeout”
发生时间:20:56:19、21:00:16
原因与建议:
应用程序在尝试播放媒体内容时超时。可能的原因包括网络连接问题、服务器响应慢、媒体文件加载延迟等。
需要检查播放逻辑中的超时设置是否合理,优化网络请求或资源加载过程,增加重试机制,或者为用户提供友好的错误提示和解决方案建议。
播放失败:Cancelled:

错误信息:“System.Exception: 播放失败: Cancelled”
发生时间:20:59:38
原因与建议:
播放操作被取消。这可能是由于用户主动操作(如点击暂停或关闭按钮)、系统中断或其他内部逻辑触发的取消请求。
调查相关代码逻辑,确认是否有意外的取消请求发送,或者用户交互可能导致的未预期行为。确保播放控制逻辑对取消事件做出恰当响应,避免引发异常。
媒体播放器尚未就绪:

错误信息:“System.InvalidOperationException: 此时媒体播放器尚未就绪”
发生位置:Bili.Copilot.ViewModels.PlayerDetailViewModel.EnsureMediaPlayerExist()
原因与建议:
在调用播放/暂停操作时,发现媒体播放器实例不存在或尚未初始化完成。这可能是由于初始化过程未完成、播放器实例被提前释放,或是相关状态管理不当导致。
确保在调用播放/暂停等操作前,媒体播放器已经正确创建并进入可用状态。可以考虑在播放器初始化完成后设置标志位,或在播放操作前添加必要的状态检查。
综上所述,建议开发者针对上述问题进行代码审查和调试,修复可能导致并发ContentDialog打开、播放超时或取消、以及媒体播放器未就绪的问题。同时,优化用户体验,为可能出现的异常情况提供清晰的错误提示和适当的恢复策略。

人人为我,我为人人

我更擅长发现问题

Richasy commented 5 months ago

建议在设置页面切换到网页播放器或者 mpv 播放器