【问题标题】:Com Object ExceptionCom 对象异常
【发布时间】:2009-01-26 14:41:27
【问题描述】:

我编写了一个应用程序,它遍历一组记录并打印两件事。

一个是来自 SSRS 的报告,它工作正常。

另一种是使用COM对象打印的绘图。 COM 对象随机失败并导致程序退出。

当 COM 对象失败时,有没有办法阻止它杀死整个程序?我已经尝试在每个级别捕获每个异常,但它仍然不起作用。

【问题讨论】:

    标签: vb.net exception exception-handling comobject


    【解决方案1】:

    你有你正在调用的 COM 对象的代码吗?如果您有代码,请检查是否有任何退出命令失败。

    【讨论】:

    • 我没有代码,只有文档,也没有提到列出的任何退出命令。
    • 如果它是一个exe,那么我认为它不应该在失败时退出。仅当它是 dll 时才会发生这种情况
    • 这是一个dll。我发现一些代表标记为 OnFailedLoadingDocumentEventHandler、OnFailedPrintingDocumentEventHandler 和 OnFailedSavingDocumentEventHandler。我也许可以使用这些来阻止错误。
    • 您的应用程序是在退出前获得控制权还是仅存在于dll中。如果您在存在之前获得控制,您可以检查调用的返回值吗?
    • 它有我用来打印和处理的 OnFinishedLoading 和 OnFinishedPrinting 方法,但它不返回值。开发人员在文档中指出,它会生成一个新线程来加载文档并在完成之前引用它可能会导致崩溃。
    【解决方案2】:

    您是否正在使用来自多个线程的 COM 对象?您应该只使用消息泵从单个线程访问 COM 对象。根据我的经验,这可能会导致无法通过 try-catch 捕获的奇怪不稳定。

    【讨论】:

    • 这仅适用于 STA(单线程单元)对象。
    【解决方案3】:

    听起来问题可能与 com 对象本身有关,而不是您的代码。如果是这种情况,那么如果 com 对象没有抛出错误,那么您将无法捕捉到错误。

    亲切的问候

    托尼·史密斯-布鲁斯特

    【讨论】:

      猜你喜欢
      • 2010-09-05
      • 2015-03-20
      • 1970-01-01
      • 1970-01-01
      • 2010-11-17
      • 1970-01-01
      • 2020-08-19
      • 2011-08-08
      • 2012-02-28
      相关资源
      最近更新 更多