Skip to content

v1.5.4 剪贴板原生化——绕开 OLE 周期性卡死

Choose a tag to compare

@Traveritas Traveritas released this 24 Sep 17:23

修复「回车/双击复制卡约 3 秒后提示‹剪贴板写入失败›」的假失败问题。

  • 根因:WPF/OLE 剪贴板通路会周期性卡死——每次写入自旋约 0.9 秒后抛 CLIPBRD_E_CANT_OPEN(界面侧 3 次重试即约 2.9 秒的卡顿),而数据其实已(延迟渲染)写进剪贴板、界面却报失败。用独立进程复现:同一分钟内 OLE 通路失败、原生 Win32 通路全部成功——是环境级故障,不是应用缺陷
  • 桌面版剪贴板访问全面改走原生 Win32(新增 Win32Clipboard):回车复制、预填兼容模式(备份/清空/读取/还原)、从剪贴板预填,三处全部迁移
  • 写入即静态数据(进程退出后照样可粘贴,不再依赖 Flush),失败原子且真实——不再出现「报错但内容其实已进剪贴板」的错位;每次尝试的失败步骤与耗时写进 diag.log(commit: copy ok (Xms, attempt N) / attempt N/3 failed)
  • 实测(故障现场):复制 1 毫秒成功(修复前稳定 2.9 秒失败);兼容模式预填的成功与失败两条分支端到端通过;UIA 预填主路径不受影响