【问题标题】:Why do COM events cease to work when we use unit testing with Microsoft Visual Studio 2008?为什么当我们使用 Microsoft Visual Studio 2008 进行单元测试时 COM 事件停止工作?
【发布时间】:2009-06-10 12:41:39
【问题描述】:

我们有一些使用 COM 的 C# 代码(其调用遗留代码)。

当事件发生时,会触发 COM 事件。

一切都很完美。

但是,如果我们在单元测试中调用相同的代码,那么 COM 事件会突然停止触发 - 只是静默,就像某种没有派对的空房间。

有什么想法吗?

环境:

  • Microsoft Visual Studio 2008。
  • 使用 MSVS 2008 的内置单元测试进行单元测试

【问题讨论】:

    标签: c# unit-testing com


    【解决方案1】:

    如果没有进一步的细节,这很难诊断。但是,这可能实际上是一个公寓问题:IIRC,VS 在 STA 中运行测试。如果您的应用程序使用 MTA 运行相同的代码,则可能是您面临死锁或类似问题。

    【讨论】:

      【解决方案2】:

      好吧,我们无法修复它,因此我们设法通过改用使用套接字而不是 COM 的 API 版本来解决它。现在一切正常。

      我 90% 确定我们使用的 COM API 基于 MTA(多线程单元)而不是 STA(单线程单元)。根据我对 COM 的了解,MTA 和 STA 不会混在同一个空间中。

      我投票支持你的答案,因为这是我能想到的唯一解释,可以解释单元测试期间完全没有 COM 事件。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-03-11
        • 1970-01-01
        • 2012-10-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-07-29
        • 1970-01-01
        相关资源
        最近更新 更多