退出游戏后PCL小概率无法正常播放或重新播放音乐
检查项
- [X] 我已在 Issues 页面 和 常见&难检反馈及问题列表 中搜索,确认了这一 Bug 未被提交过。
描述
游戏结束后PCL内的音乐按钮左键右键无法播放或重新播放音乐
重现步骤
1.启动游戏 2.退出游戏
日志与附件
https://github.com/user-attachments/assets/07b9937a-19c0-4bac-9fe4-27bd33048d46
上传日志
@allMagicNB 日志:Log1.txt
我没看出问题……
但PCL的背景音乐在退出游戏后无法播放,之前并没有这样的问题,重启PCL就恢复了。游戏内音乐配置如下
# Ln 637
[21:23:53.014] Runtime Invoke 1366#:线程执行失败:未将对象引用设置到对象的实例。
在 Microsoft.VisualBasic.CompilerServices.Symbols.Container.InvokeMethod(Method TargetProcedure, Object[] Arguments, Boolean[] CopyBack, BindingFlags Flags)
在 Microsoft.VisualBasic.CompilerServices.NewLateBinding.CallMethod(Container BaseReference, String MethodName, Object[] Arguments, String[] ArgumentNames, Type[] TypeArguments, Boolean[] CopyBack, BindingFlags InvocationFlags, Boolean ReportErrors, ResolutionFailure& Failure)
在 Microsoft.VisualBasic.CompilerServices.NewLateBinding.ObjectLateCall(Object Instance, Type Type, String MemberName, Object[] Arguments, String[] ArgumentNames, Type[] TypeArguments, Boolean[] CopyBack, Boolean IgnoreReturn)
在 Microsoft.VisualBasic.CompilerServices.NewLateBinding.LateCall(Object Instance, Type Type, String MemberName, Object[] Arguments, String[] ArgumentNames, Type[] TypeArguments, Boolean[] CopyBack, Boolean IgnoreReturn)
在 PCL.ModMusic._Closure$__._Lambda$__14-0()
在 PCL.ModBase._Closure$__124-0._Lambda$__0()
错误类型:System.NullReferenceException
[21:23:53.034] [UI] 弹出提示:已取消启动!
[21:23:53.044] [Taskbar] Minecraft 启动 已移出任务列表
有个对象引用出错了,应该是这个导致的。
#3708,在 2.7.4 尝试修复,好像是没修掉……? 但我这没法重现,需要一个稳定的重现方法……
Log 中的 PCL.ModMusic._Closure$__._Lambda$__14-0() 是这里:
但这三行代码根本不可能报出 NullReferenceException,见了鬼了……
由于无人能复现暂时关闭
发现了一个可以 100% 复现的方法……
在 PCL 播放音乐时,打开声音设置,然后禁用当前的输出设备(拔出设备也是相同的效果)。
此时,PCL 的播放进度条会卡住不动,无论如何点击音乐图标也不会发出声音(如本 Issue 附件视频中所示)。
再搭配上 游戏退出后自动开始播放 这一功能,Minecraft 退出后 PCL 就会爆出 System.NullReferenceException。
相关 Log:Log1.txt
注:怀疑与 #3908 为相同成因 又注:上述复现步骤与 #480 大致相同
真的播放不了了,神一般的bug体质啊
就是说,为啥不开我的呢?(3708)[https://github.com/Hex-Dragon/PCL2/issues/3708]