C# 当我们在MicrosoftVisualStudio2008中使用单元测试时,为什么COM事件停止工作?

C# 当我们在MicrosoftVisualStudio2008中使用单元测试时,为什么COM事件停止工作?,c#,unit-testing,com,C#,Unit Testing,Com,我们有一些使用COM(其调用遗留代码)的C#代码 当事件发生时,将触发COM事件 一切都很完美 然而,如果我们在单元测试中调用相同的代码,那么COM事件就会突然停止触发——它只是沉默,就像某种没有参与方的空房间 你知道为什么吗 环境: 微软VisualStudio2008 使用MSVS2008内置单元测试进行单元测试 如果没有进一步的细节,这很难诊断。然而,这可能实际上是一个单元问题:IIRC,VS在STA中运行测试。如果您的应用程序使用MTA运行相同的代码,则可能是您面临死锁或类似问题。我们

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

当事件发生时,将触发COM事件

一切都很完美

然而,如果我们在单元测试中调用相同的代码,那么COM事件就会突然停止触发——它只是沉默,就像某种没有参与方的空房间

你知道为什么吗

环境:

  • 微软VisualStudio2008
  • 使用MSVS2008内置单元测试进行单元测试

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

      我们无法修复它,因此我们通过切换到使用套接字而不是COM的API版本来解决它。现在一切都很好

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

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