C# 如何解析指示应用程序正忙的消息筛选器。(HRESULT的异常:0x8001010A(RPC_E_服务器调用_RETRYLATER))

C# 如何解析指示应用程序正忙的消息筛选器。(HRESULT的异常:0x8001010A(RPC_E_服务器调用_RETRYLATER)),c#,asp.net,ms-office,office-interop,C#,Asp.net,Ms Office,Office Interop,我在PowerPoint\u应用程序演示文稿中遇到以下异常。打开code 异常消息:消息筛选器指示应用程序正忙。(HRESULT的异常:0x8001010A(RPC_E_服务器调用_RETRYLATER)) 我以前在这段代码上没有收到这个错误。以前一切都很好。有人能帮忙吗?我最终删除了: PowerPoint.Application PowerPoint_App; PowerPoint_App = new PowerPoint.ApplicationClass(); PowerPoint_App

我在
PowerPoint\u应用程序演示文稿中遇到以下异常。打开
code

异常消息:消息筛选器指示应用程序正忙。(HRESULT的异常:0x8001010A(RPC_E_服务器调用_RETRYLATER))

我以前在这段代码上没有收到这个错误。以前一切都很好。有人能帮忙吗?

我最终删除了:

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;

它成功了

我正在处理一个类似的问题(通过PowerShell控制Excel),我想补充一点——以一种我无法解释的方式——类似于@Milind Anantwar的建议导致我的脚本开始工作

如果有帮助,请提供更多详细信息:

  • 在我的例子中,在本地运行时,一切都很好。我开始看电影了

    应用程序正忙

    仅当我移动到通过Azure混合工作程序运行程序执行时发生异常

  • 参考以下代码片段,我在第2行之后看到异常,但删除第2行“修复”了问题:

     PowerPoint_App.Visible = MsoTriState.msoTrue;
    
  • $SHOW\u EXCEL
    设置为
    $false
    时,我看到了异常


检查您的任务管理器;您可能有调试会话中的孤立应用程序实例。杀了它,再试一次。我以前也是这样。

我只想说,建议对我来说是100%正确的。虽然我的问题是与Excel而不是PowerPoint交互的代码,但我相信它仍然适用

突然,一项多年来一直完美运行、没有问题的服务似乎不知从何而来,开始遇到这个错误。最近也没有任何可疑的代码更改

我使用运行相关自动服务的服务帐户的凭据通过远程桌面登录到服务器,当我手动启动Excel时,会出现一个弹出窗口,其中包含一些我不关心的无关新闻。我点击OK,关闭Excel,注销,重新启动服务,瞧!没有问题了


长话短说,问题的根本原因(对我来说)是Excel试图显示一个弹出窗口,而持续的代码执行无法继续,因为没有用户确认该弹出窗口。如果您的问题与我的问题相同,那么您的问题将消失。

对于我来说,打开工作簿后,我必须等待Excel“准备就绪”。下面的解决方案解决了这个问题:

$excel = New-Object -ComObject Excel.Application    
$excel.visible = $SHOW_EXCEL    
$workbook = $excel.Workbooks.Open($_excel_file) 

出于好奇-你有没有试着交换台词?所以你在打开演示文稿后让应用程序可见…@Ahmedilyas:我没有试过。然而,正如我已经说过的,以前使用的代码是相同的。office应用程序(powerpoint)可能只是显示一些消息(如重新激活消息、新闻或启动时可能选择显示的任何消息),然后等待您单击它。。“DisplayAlerts=None”不会阻止这些。这有时就是导致此错误的原因。试着手动启动PowerPoint,看看启动时是否有弹出消息。值得一提的是,我还发现在按计划任务运行流程时,无法获取COM对象。不过,将其作为标准应用程序运行似乎可以做到这一点。该线程包含一些有价值的信息。我遇到了一个类似的问题,添加了一个睡眠帮助。我只是遇到了与使用Perl模块Win32::OLE读取Excel文件的OP相同的问题。我正在处理的示例有一行
$Excel->{Visible}=1。对此的评论为我解决了这个问题。
xlApp = new Excel.Application();
xlBook = xlApp.Workbooks.Open(workbook);

// wait for the workbook to open
while (!xlApp.Ready)
{
    Thread.Sleep(500);
}