Здравствуйте, slava_529872, Вы писали:
_>Добрый день всем!
Скорее всего, ты пытаешься это делать внутри обработчика синхронного сообщения, отправленного с помощью SendMessage
http://www.rsdn.ru/Forum/Message.aspx?mid=352302&only=1Автор: UnrealAlex
Дата: 13.08.03
От STA лучше избавляться, если проект UI ориентированный, то одного STA (главного) будет вполне достаточно, а рабочие потоки лучше перевести в MTA
Здравствуйте, Ivan, Вы писали:
I>Здравствуйте, slava_529872, Вы писали:
_>>Добрый день всем!
I>Скорее всего, ты пытаешься это делать внутри обработчика синхронного сообщения, отправленного с помощью SendMessage
I>http://www.rsdn.ru/Forum/Message.aspx?mid=352302&only=1Автор: UnrealAlex
Дата: 13.08.03
I>От STA лучше избавляться, если проект UI ориентированный, то одного STA (главного) будет вполне достаточно, а рабочие потоки лучше перевести в MTA
Неа... я не из обработчика синхронного сообщения, отправленного с помощью SendMessage это делаю. Я это делаю сразу в начале потоковой функции...после CoInitialize конечно.
У меня задача — не UI ориентированная. Рабочие потоки служат для поставки операций, вызываемых клиентом в очередь (асинхронные вызовы).
MTA по-моему напряжно будет, если я не ошибаюсь... мне надо, чтобы события генерились из рабочих потоков например.... я не умру с MTA ?
вроди как решил проблему...надо ещё потестить побольше... Нашел на заграничном сайте диалог меж двумя английцами. У одного мои же грабли. А второй ему советовал для интерфейса, указатель на который маршалится постаить атрибут "oleautomation". Я возьми да и поставь тоже.... работает пока). Ох уж эти кзэзи инглиш пипл)
Здравствуйте, slava_529872, Вы писали:
_>Здравствуйте, Ivan, Вы писали:
_>Неа... я не из обработчика синхронного сообщения, отправленного с помощью SendMessage это делаю. Я это делаю сразу в начале потоковой функции...после CoInitialize конечно.
_>У меня задача — не UI ориентированная. Рабочие потоки служат для поставки операций, вызываемых клиентом в очередь (асинхронные вызовы).
_>MTA по-моему напряжно будет, если я не ошибаюсь... мне надо, чтобы события генерились из рабочих потоков например.... я не умру с MTA ?
CoInitialize ты с какими флажками вызываешь? если рабочие потоки создают свои собственные STA, то они должны иметь цикл выборки сообщений из очереди. Т.к. у тебя уже используется GIT, то рабочие потоки могут использовать любую потоковую модель и MTA для них подходит гораздо лучше — не нужен цикл сообщений и не будет проблем с реентерабельностью. Насчет oleautomation из соседнего поста — у тебя до этого был не automation интерфейс? тогда проблема могла быть вызвана отсутствием proxy/stub (компилировал проект для proxy/stub ?) — но не в 30% а в 100% вызвов
и если проект не UI ориентированный, то главный поток тоже запросто может войтив MTA, а не в STA, тогда не будет маршалинга между потоками и не будет специфичных для STA проблем.
Здравствуйте, Ivan, Вы писали:
I>CoInitialize ты с какими флажками вызываешь?
CoInitialize(NULL)
I>Насчет oleautomation из соседнего поста — у тебя до этого был не automation интерфейс? тогда проблема могла быть вызвана отсутствием proxy/stub (компилировал проект для proxy/stub ?) — но не в 30% а в 100% вызвов 
Так точно! Теперь компилирую и регистрирую proxy/stub. Работает нормально.
I>и если проект не UI ориентированный, то главный поток тоже запросто может войтив MTA, а не в STA, тогда не будет маршалинга между потоками и не будет специфичных для STA проблем.
Ясненько.
Спасибо тебе Иван большое за чуткость и хорошие советы!