Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> CreateJbject в потоке, CreateJbject в потоке 
:(
    Опции темы
Гость_sall82
Дата 28.12.2005, 09:01 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цель неясна, мысли туманны...
Есть функция, вызываемая потоком - threadProc
в ней хочу открыть адо, взять данные с SQL сервера, "съесть" их и закончить поток.
dim myAdo as object
set myAdo = CreateObject("msadodvlib.adodc")

Но не тут-то было. На креат обжект поток обижается, и вылетает с ошибкой "Память не может быть read"
Где-то внутри понимаю, что нужно использовать АПИ, но не имею ни малейшего представления, как объявить, инициализировать, и общаться с адо в этом случае. Кто-нить понимает, что я хочу сказать?
  Вверх
Akina
Дата 28.12.2005, 09:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



а может, без CreateObject - попробовать как в приложении

Код

Dim cn as ADODB.Connection
Set cn = New ADODB.Connection
With cn
    .Provider = "..."
    .ConnectionString = "..."
    .Open
End With 



--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Plamenk
Дата 28.12.2005, 10:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 258
Регистрация: 18.2.2003

Репутация: нет
Всего: 3



Как ты создаешь потоки?

Если с помощью WinApi, то CreateObject точно нельзя использовать.
Многопточность в VB можно реализовать с помощью ActiveX EXE.
PM MAIL   Вверх
Гость_sall82
Дата 28.12.2005, 10:35 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Пробовал, конечно. В простой-то функции эт работает, но вот в теле потока... В нем же большинство принципов VB не заработает. В твоем примере
Dim cn as ADODB.Connection - проходит нормально
а вот на
Set cn = New ADODB.Connection - уже ошибка. В потоке нельзя использовать NEW, надо по-другому ломать.

  Вверх
Гость_sall82
Дата 28.12.2005, 10:39 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Plamenk
Млин, так и знал, что все дело в стандарт exe.
Потоки то создаю, кушая CreateThread из Kernel32. Значит, копать надо на ActiveX, по-другому никак?
У меня поток просто этот - маллеееееенькая часть всего кода. Причем код этот уже конечный, его просто оптимизирую. Не охота ковырять все заново...
  Вверх
Plamenk
Дата 28.12.2005, 11:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 258
Регистрация: 18.2.2003

Репутация: нет
Всего: 3



Многопоточность надо реализовывать через ActiveX EXE.
Посмотри в MSDN там даже был пример!
Добавлено @ 11:40
У меня в MSDN от 2001 выдается статья с названием "Creating a Multithreaded Test Application"
PM MAIL   Вверх
Гость_sall82
Дата 29.12.2005, 08:17 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Млин. Все делал, не могу победить, и все.
Это уже про ActiveX.
И в MSDN только простой поток описан - сложить, вычесть, разделить. Я же не расстояние до звезд вычисляю, а пытаюсь довольно продолжительный рекордсет в параллели выполнять.
Кто знает, в чем проблема?
Суть такая. Есть поток. Создаю его APIшной Creadthread, передаю адрес ThreadProc
В этой процедуре объявляю
dim MyConnection as clsMyConnection, где clsMyConnection - созданный мной для простоты душевной класс. Внутри класса, все что можно и нельзя, уже объявил public, в нем сидит и стандартный адо, куча его параметров и результатов.
Но как только из поточной функции ThreadProc вызываю хотя бы MyConnection.SetRecorsource (свой метод в классе), поток вылетает на этом месте. Меня пока еще бесить не начало, но скоро начнет. Помогите, кто чем может... с ума не сойти.
Или вернуться на си.
  Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB6 | Следующая тема »


 




[ Время генерации скрипта: 0.0435 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.