Здравствуйте, Ivan, Вы писали:
I>Здравствуйте, Osi2, Вы писали:
I>Надо разобраться, почему открытие соединения вовзаращает E_FAIL, сейчас маршалинг явно ни при чем
Прошу меня извинить, потому что прогнал немного.
забыл указать провайдера:
m_Connection->Provider = "ExOLEDB.DataSource";
то есть, при создании Connection'a вручную все ОК.
Здравствуйте, Osi2, Вы писали:
O>то есть, при создании Connection'a вручную все ОК.
Мне начинает казаться, что проблема заключается вовсе не в GIT и марашлинге, а в самом ADO.
Кстати, не походит вариант с созданием соединения в каждом рабочем потоке непосредственно перед открытием rrecordset'а ?
O>А надо ли обязательно передавать указатель на GIT внутрь потока?
O>До этого у меня он был глобальной переменной. Может дело в этом?
O>сейчас попробую.
не помогло. странно, но такая же ошибка
## ERROR: CCreateAppointment::SelectAppointments, Error when opening recordset: The application called an interface that was marshalled for a different thread., hr: 0
Здравствуйте, Ivan, Вы писали:
I>Здравствуйте, Osi2, Вы писали:
O>то есть, при создании Connection'a вручную все ОК.
I>Мне начинает казаться, что проблема заключается вовсе не в GIT и марашлинге, а в самом ADO. I>Кстати, не походит вариант с созданием соединения в каждом рабочем потоке непосредственно перед открытием rrecordset'а ?
именно это пока и работает. когда по ConnectionString создаю новое соединение. тогда все S_OK!
а что может быть тогда с ADO? Не может быть, что я в одном потоке создаю соединения и не закрываю их?
Может контролировать открытия с пом AddRef() и Release()? Может он наоборот закрывается? Я вообще с ними не работал , не знаю точно — они для этого используются или нет?
Здравствуйте, Osi2, Вы писали:
O>а что может быть тогда с ADO? Не может быть, что я в одном потоке создаю соединения и не закрываю их?
Покажи, откуда у тебя берется pRecordset ? Он создается в апартменте рабочего потока ?
Здравствуйте, Ivan, Вы писали:
I>Здравствуйте, Osi2, Вы писали:
O>а что может быть тогда с ADO? Не может быть, что я в одном потоке создаю соединения и не закрываю их? I>Покажи, откуда у тебя берется pRecordset ? Он создается в апартменте рабочего потока ?
да, там и создается. дело не в нем, потому что в этом потоке при вызове другой функции при сохранении объекта используя Connection,
программа выдает такую же ошибку.
кстати, попробовал передавать в поток и GIT (об этом писал в одном из предыдущих сообщений), это тоже не помогло.