Repository navigation
Releases
NetPulse 3.0.4
这一版全是"右键托盘"这条路上暴露出来的问题。
修复
-
托盘右键会偶发卡死整个任务栏:托盘图标的鼠标事件,是 explorer 在处理通知区域点击时同步回调进我们进程的。原来我们在这个回调里直接打开面板(建窗口、载字体),还在里面调
TaskbarInfo.Query()去跨进程问任务栏的几何——explorer 正等着我们返回,我们又在等它,两边一起僵住,表现就是任务栏点不动、图标没反应、我们自己的定时器也全停。现在:回调只做「投递一条消息」立刻返回,任务栏几何改用看门狗缓存下来的值,点击路径一次跨进程调用都没有。实测同步回调占用 UI 线程 0 ms。 -
面板和任务栏组件的数字对不上、而且不动:面板只在打开的那一刻取了一份样本,之后每秒只是把同一份快照重画一遍;组件那边更直接——去掉自己的采样订阅后,
_last就再没人更新,数字要等下一次重排才跳一下。现在每秒用同一份样本同时喂给组件和面板,两边逐帧一致。顺带修掉面板曲线环形缓冲从未推进(_pos永远是 0)的问题,曲线现在真的在滚。 -
面板改成启动时预建(隐藏):第一次点托盘图标时不再现场建窗口、载字体,那 40 毫秒左右的工作挪到了启动的预热阶段,点击只是一次显示 + 淡入。
-
UI 刷新闸门可能永久卡住:投递到 UI 线程的刷新如果因为模态循环没能回来,闸门会一直关着,网速从此定格。现在超过 3 秒强制放开。
-
网络页「探测目标」下拉会张冠李戴:标签数组和取值数组顺序不一致,选「阿里 DNS」实际测的是 Cloudflare。已按顺序对齐,并把默认项排到第一位。
-
--selftest会把用户配置改掉:自检以前直接读写netpulse.ini,跑一次就把界面设置、探测目标(连默认值都被改回 223.5.5.5)覆盖成测试值。现在自检用data\selftest.ini这个临时文件,跑完即删,用户配置一个字节都不动。
其他
- 日志开头现在写真实版本与 Windows 版本(
NetPulse 3.0.4 启动 · Windows 10.0 build 26100),排查问题时不用再问「你装的是哪个版本」。
实测
- 右键任务栏组件连续开合 6 次,
SendMessageTimeout(Shell_TrayWnd)全程 0 ms。 - 模拟 explorer 的同步托盘回调(跨进程
SendMessage)连续 5 次:最长占用 UI 线程 0 ms。 - 面板打开后连续抓帧:
7.8 KB/s / 1.2 KB/s / 19ms与任务栏组件完全一致,数字每秒刷新。