У меня есть COM-объекты, которые я создаю и работаю в потоках в приложении .NET. Потоки отмечены как Single Threaded Apartments, и все, кажется, работает. Я понимаю, что если эти потоки попытаются получить доступ к COM-объектам из основного потока, тогда эти объекты будут автоматически маршалированы и сериализованы для меня в .NET, поэтому даже в этом случае все будет обработано для меня, все безопасно и аккуратно, хотя возможно немного медленно.Требуется ли сообщение STA Message Loop в этом случае?
Мой вопрос в том, что все работает нормально, я не перекачка цикла сообщений в потоках STA, которые я создаю. Я предпочел бы избежать цикла сообщений, если смогу, из-за дополнительных осложнений, которые он может вызвать (и возможных потерь эффективности).
Я прочитал кучу советов о том, почему необходим цикл сообщений (в основном из очень полезного Hans Passant), и я понимаю, что цикл сообщений дает место в потоке A, где может быть другой поток B запросить, чтобы объекты COM, живущие в потоке A, могли быть маршалированы и воспроизведены. Если это так, то до тех пор, пока никакие другие нити ничего не требуют от объектов COM в потоке A, является ли Thread A безопасным в том, что он не накачивает цикл сообщений? Или есть другие случаи, когда цикл сообщений может также вступить в игру?
Я играю с огнем здесь? И есть ли когда-нибудь случай, когда вы спрашиваете, играете ли вы с огнем, а вы нет?
У вас есть события? У вас есть контроль над обработчиками событий, чтобы убедиться, что их повторные вызовы не вызовут бесконечной рекурсии? Сообщение об отправке обычно используется для разрыва этого цикла, если у вас есть насос сообщений. –
Думаю, я не знаю о проблемах, связанных с этим. Что могло бы вызвать событие в потоке, который я создал, и никто больше не смотрит? Объекты COM, которые я использую? Насколько я знаю, они не создают каких-либо событий ... – user12861
Вы реализуете интерфейсы исходящих событий, такие как IConnectionPointContainer, если дизайн вашего COM-объекта включает в себя уведомление внешнего мира о том, что происходит. –