Почему события COM перестают работать, когда мы используем модульное тестирование в Microsoft Visual Studio 2008? - PullRequest
1 голос
/ 10 июня 2009

У нас есть некоторый код C #, который использует COM (его вызывающий устаревший код).

Когда происходит событие, запускается событие COM.

Все отлично работает.

Однако, если мы вызываем тот же код из модульного теста, то внезапно события COM перестают запускаться - это просто тишина, как какая-то пустая комната без вечеринки.

Есть идеи, почему?

Окружающая среда:

  • Microsoft Visual Studio 2008.
  • Модульное тестирование с использованием встроенного модульного тестирования для MSVS 2008

Ответы [ 2 ]

2 голосов
/ 10 июня 2009

Без дополнительных подробностей это трудно диагностировать. Однако, возможно, что это на самом деле проблема квартиры: IIRC, VS проводит тесты в STA. Если ваше приложение использует MTA для запуска того же кода, возможно, вы столкнулись с тупиковой блокировкой или аналогичными проблемами.

0 голосов
/ 10 июня 2009

Ну, мы не могли это исправить, поэтому нам удалось обойти это, переключившись на использование версии API, которая использует сокеты, а не COM. Теперь все отлично работает.

Я на 90% уверен, что COM API, который мы используем, основан на MTA (многопоточные квартиры), а не STA (однопотоковые квартиры). Из того, что я знаю о COM, MTA и STA не смешиваются в одном и том же месте.

Я голосую за ваш ответ, потому что это единственное объяснение, которое я могу придумать, которое объясняет полное отсутствие событий COM во время модульного теста.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...