排查Word 2016中Tasks.Exists()调用无响应问题的方法
问题描述
接手客户系统维护数月,正推进系统升级:为迁移邮件至O365 Exchange,将RDP服务器上的Office套件从2013升级至2016。服务器上有一款第三方报表生成应用,运行时会打开Word并插入宏;用户操作完成退出时,应用会调用子程序通过Tasks.Exists()检查并关闭Word文档。
升级后出现随机无响应问题:Word文档关闭耗时极长(最长需30分钟),无响应时机完全随机。
复现测试
编写VBA测试代码尝试复现问题:
Sub test() a = 1 For i = 1 To 10000 If Tasks.Exists("MMMMM") Then Else a = a + 1 End If Debug.Print (a) Next i End Sub
通过Debug.Print无法定位具体无响应时机:有时可多次正常运行,有时首次循环就无响应,只能通过任务管理器强制终止进程。
已执行排查操作
- 禁用服务器杀毒软件,问题仍存在
- 将Windows Server 2016和Office 2016更新至最新版本,未解决问题
- 观察到无响应且
Tasks.Exists()无法正常搜索任务时,Software Protection服务会停止 - 同事反馈:服务器上的Access应用偶尔也会出现关闭耗时过长的情况,该问题升级前就存在但发生频率极低,升级后未明显加剧
限制条件
报表应用为第三方开发,无法修改其使用Tasks.Exists()的逻辑,现寻求可行的排查思路与解决方案。
内容的提问来源于stack exchange,提问作者Goran Kovacevic
相关产品推荐
相关产品推荐

