![]() |
|
Модераторы: Akina |
![]()
|
|
| Гость_sall82 |
|
|||
|
Unregistered |
Цель неясна, мысли туманны...
Есть функция, вызываемая потоком - threadProc в ней хочу открыть адо, взять данные с SQL сервера, "съесть" их и закончить поток. dim myAdo as object set myAdo = CreateObject("msadodvlib.adodc") Но не тут-то было. На креат обжект поток обижается, и вылетает с ошибкой "Память не может быть read" Где-то внутри понимаю, что нужно использовать АПИ, но не имею ни малейшего представления, как объявить, инициализировать, и общаться с адо в этом случае. Кто-нить понимает, что я хочу сказать? |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 34 Всего: 454 |
а может, без CreateObject - попробовать как в приложении
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| Plamenk |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 258 Регистрация: 18.2.2003 Репутация: нет Всего: 3 |
Как ты создаешь потоки?
Если с помощью WinApi, то CreateObject точно нельзя использовать. Многопточность в VB можно реализовать с помощью ActiveX EXE. |
|||
|
||||
| Гость_sall82 |
|
|||
|
Unregistered |
Пробовал, конечно. В простой-то функции эт работает, но вот в теле потока... В нем же большинство принципов VB не заработает. В твоем примере
Dim cn as ADODB.Connection - проходит нормально а вот на Set cn = New ADODB.Connection - уже ошибка. В потоке нельзя использовать NEW, надо по-другому ломать. |
|||
|
||||
| Гость_sall82 |
|
|||
|
Unregistered |
Plamenk
Млин, так и знал, что все дело в стандарт exe. Потоки то создаю, кушая CreateThread из Kernel32. Значит, копать надо на ActiveX, по-другому никак? У меня поток просто этот - маллеееееенькая часть всего кода. Причем код этот уже конечный, его просто оптимизирую. Не охота ковырять все заново... |
|||
|
||||
| Plamenk |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 258 Регистрация: 18.2.2003 Репутация: нет Всего: 3 |
Многопоточность надо реализовывать через ActiveX EXE.
Посмотри в MSDN там даже был пример! Добавлено @ 11:40 У меня в MSDN от 2001 выдается статья с названием "Creating a Multithreaded Test Application" |
|||
|
||||
| Гость_sall82 |
|
|||
|
Unregistered |
Млин. Все делал, не могу победить, и все.
Это уже про ActiveX. И в MSDN только простой поток описан - сложить, вычесть, разделить. Я же не расстояние до звезд вычисляю, а пытаюсь довольно продолжительный рекордсет в параллели выполнять. Кто знает, в чем проблема? Суть такая. Есть поток. Создаю его APIшной Creadthread, передаю адрес ThreadProc В этой процедуре объявляю dim MyConnection as clsMyConnection, где clsMyConnection - созданный мной для простоты душевной класс. Внутри класса, все что можно и нельзя, уже объявил public, в нем сидит и стандартный адо, куча его параметров и результатов. Но как только из поточной функции ThreadProc вызываю хотя бы MyConnection.SetRecorsource (свой метод в классе), поток вылетает на этом месте. Меня пока еще бесить не начало, но скоро начнет. Помогите, кто чем может... с ума не сойти. Или вернуться на си. |
|||
|
||||
![]()
|
| Правила форума "VB6" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | VB6 | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |