Может ли размер очереди COM вызвать переполнение стека? - PullRequest
0 голосов
/ 24 марта 2020

Полагаю, это может произойти только в настройках STA, поскольку все COM-вызовы обрабатываются одним потоком. У меня есть тестовый сценарий с приложением. NET, делающим вызов COM для компонента C ++, который вызывает удаленный компонент COM. (У меня есть код всех компонентов). Это. NET приложение запускает несколько сотен задач. Каждая задача выполняет от 3 до 5 вызовов COM, каждый из которых выполняет как минимум еще один вызов COM для удаленного компонента. Таким образом, у нас много COM-вызовов.

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

Имеет ли это смысл? Может ли слишком много COM-вызовов вызвать переполнение стека? Есть ли способ решить эту проблему?

...