如何解决 消息过滤器指示应用程序正忙。 (来自 HRESULT 的异常:0x8001010A (RPC_E_SERVERCALL_RETRYLATER))
Posted
技术标签:
【中文标题】如何解决 消息过滤器指示应用程序正忙。 (来自 HRESULT 的异常:0x8001010A (RPC_E_SERVERCALL_RETRYLATER))【英文标题】:how to resolve The message filter indicated that the application is busy. (Exception from HRESULT: 0x8001010A (RPC_E_SERVERCALL_RETRYLATER)) 【发布时间】:2014-02-24 12:41:11 【问题描述】:PowerPoint.Application PowerPoint_App;
PowerPoint_App = new PowerPoint.ApplicationClass();
PowerPoint_App.DisplayAlerts = PowerPoint.PpAlertLevel.ppAlertsNone;
PowerPoint.Presentation presentation;
presentation = null;
try
PowerPoint_App.Visible = MsoTriState.msoTrue;
presentation = PowerPoint_App.Presentations.Open(strPptFilePath, Microsoft.Office.Core.MsoTriState.msoFalse, Microsoft.Office.Core.MsoTriState.msoFalse, Microsoft.Office.Core.MsoTriState.msoFalse);
PowerPoint.Slide tempSlide = null;
int totalSlides = presentation.Slides.Count;
int slideNo = 0;
我在PowerPoint_App.Presentations.Open
代码上遇到以下异常。
异常消息:消息过滤器指示应用程序正忙。 (来自 HRESULT 的异常:0x8001010A (RPC_E_SERVERCALL_RETRYLATER))
我之前在此代码块上没有收到此错误。之前一切都运行良好。有人可以帮忙吗?
【问题讨论】:
这个线程有一些有价值的信息link。我遇到了类似的问题,添加睡眠有帮助。 【参考方案1】:我最终删除了:
PowerPoint_App.Visible = MsoTriState.msoTrue;
它奏效了……!!!
【讨论】:
出于好奇 - 你有没有尝试换行?因此,您可以在打开演示文稿后让应用程序可见... @Ahmedilyas:我没试过。但是,正如我已经说过的,以前可以使用相同的代码。 Office 应用程序 (powerpoint) 可能只是显示一些消息(如重新激活消息、新闻,或者它可能选择在启动时显示的任何消息)并等待您点击就可以了..“DisplayAlerts=None”不会阻止这些。这有时是此错误的原因。尝试简单地手动启动 PowerPoint,看看启动时是否有一些弹出消息。 不管怎样,我还发现当我的进程作为计划任务运行时,我无法获取 COM 对象。不过,将其作为标准应用程序运行似乎可以解决问题。【参考方案2】:我正在解决一个类似的问题(通过 PowerShell 控制 Excel),并想补充一点——我无法开始解释——类似于@Milind Anantwar 的建议导致我的脚本开始工作。
更多细节,如果他们有帮助的话:
就我而言,在本地运行时一切正常。我开始看到了
应用程序正忙
仅当我通过 Azure Hybrid Worker Runner 执行时例外。
参考下面的 sn-p,我在第 2 行 之后看到了异常,但删除第 2 行“修复”了问题:
$excel = New-Object -ComObject Excel.Application
$excel.visible = $SHOW_EXCEL
$workbook = $excel.Workbooks.Open($_excel_file)
当$SHOW_EXCEL
设置为$false
时,我看到了异常。
【讨论】:
我刚刚遇到了与使用 Perl 模块 Win32::OLE 读取 Excel 文件的 OP 相同的问题。我正在处理的示例有一行$Excel->Visible = 1;
。对此发表评论为我解决了这个问题。【参考方案3】:
我只想说Nikolay's 的建议对我来说是 100% 正确的。虽然我的问题在于与 Excel 而不是 PowerPoint 交互的代码,但我相信它会同样适用。
一个多年来一直完美运行而没有出现问题的服务突然开始遇到此错误。最近也没有任何可疑的代码更改。
我使用运行相关自动化服务的服务帐户的凭据通过远程桌面登录到服务器,当我手动启动 Excel 时,我看到一个弹出窗口,其中包含一些我不关心的无关新闻关于。我点击了确定,关闭 Excel,注销,然后重新启动服务,瞧!没有更多问题了。
长话短说,问题的根本原因(对我而言)是 Excel 试图显示一个弹出窗口,并且由于没有用户确认弹出窗口,因此无法继续执行代码。承认这一点,如果您遇到与我相同的问题,您的问题就会消失。
【讨论】:
【参考方案4】:检查您的任务管理器;您可能有一个来自调试会话的孤立应用程序实例。杀死它,然后再试一次。我以前也是这样。
【讨论】:
【参考方案5】:对我来说,打开工作簿后,我必须等待 Excel“准备就绪”。下面解决了这个问题:
xlApp = new Excel.Application();
xlBook = xlApp.Workbooks.Open(workbook);
// wait for the workbook to open
while (!xlApp.Ready)
Thread.Sleep(500);
【讨论】:
没有为我解决。我实际上在调用xlApp.Ready
时得到了COMException!
@MikeLowery 有趣。我会检查“Microsoft Visual Studio Tools for Office 2010 Runtime”并进行修复。以上是关于如何解决 消息过滤器指示应用程序正忙。 (来自 HRESULT 的异常:0x8001010A (RPC_E_SERVERCALL_RETRYLATER))的主要内容,如果未能解决你的问题,请参考以下文章
ora-00054: 资源正忙, 但指定以 nowait 方式获取资源如何解决
使用 Python Qpid/Proton/Messenger(),如何过滤来自 Azure 事件中心的消息?