Здравствуйте, rus blood, Вы писали:
A>>>::WaitForSingleObject(hThread, INFINITE); // Дожидаемся завершения потока, прежде чем его прибитьN_N> N_N>>Так не пробовал (но обязательно попробую), но это сильно уменьшит производительность системы. Время ответа большое.
RB>1. Насчет производительности. Т.к. VB не поддерживает multithreading, то объект создан в STA, и все вызовы в него сериализуются. В честности, вызов метода MethodTest всегда происходит в одном и том же потоке, а не в разных, как можно было бы подумать.
RB>2. Дожидаться окончания потока, конечно, не надо. Иначе получишь deadlock (из-за особенности п.1, если бы был MTA, получишь stack overflow).
Большое спасибо за ответы.
В том примере который я привел, действительно после ~0.5часа работы память увеличиваться перестает. Видимо у меня проблемы связаны с чем-то другим, скорее всего с передачей данных.
Возвращаясь к написанному ранее:
Как будет корректнее вызывать CoInitializeEx с COINIT_APARTMENTTHREADED или COINIT_MULTITHREADED учитывая что клиент на VB. Насколько я понял программа на VB выполняется в одном потоке, даже если Event-ы приходят из других потоков.
Где можно подробнее почитать, как это работает и как передаются данные через Connection Point?