У меня есть устаревший компонент COM, и моя миссия состоит в том, чтобы написать веб-сервис, который обернет COM и разрешит одновременные неблокирующие вызовы.
Прежде всего, поскольку сам COM-объект не имеет состояния, я решил использовать атрибут [ThreadStatic], чтобы у каждого потока был свой экземпляр COM-объекта, чтобы предотвратить использование оператора lock {} и включить реальную параллельную обработку. , но кажется, что все вызовы по-прежнему выполняются синхронно.
Я написал тестовый код, который запускает метод из компонента COM синхронно с циклом for {}, а затем добавил второй поток, который делает то же самое, но в другой экземпляр объекта COM, и я не увидел никаких изменений, X вызывает всегда использовать Y раз, независимо от количества потоков. Как будто есть статический замок или что-то ...
Несмотря на это, отдельные процессы могут обрабатывать каждый вызов одновременно по-настоящему. Что мешает отдельным потокам вести себя одинаково?
Что я могу сделать, чтобы разрешить реальные одновременные вызовы COM-компонента?