Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Проблемы с потоком [D5, WinXP]


Talla2k ©   (2004-04-22 17:14:00) 

Некоторый код необходимо выполнить в потоке.
Делаю так:

function potok(Param: Pointer): DWord; stdcall;
var
 conn2:_Connection;
begin

conn2:=CoConnection.Create;
conn2.Provider:='EQL OLE DB Provider';
conn2.Properties['DBMS Name'].Value:='L2Com.HcComSessionCreator';
conn2.open('2;0;38400;','1','0',Integer(adConnectUnspecified));
//...
conn2.Close;

Result:=0;
exitthread(Result);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Thread := CreateThread(nil,0,@potok,nil,0,ThreadID);
end;

При выполнении потока получаю ошибку EOleSysError(Не был произведен вызов CoInitialize)
на операторе conn2.Provider:='EQL OLE DB Provider'.
З.Ы. Если этот код выполнить без потока,то все работает.
К VCL-контролам в потоке не обращаюсь,и ошибка...
Подскажите где я не прав.
(или нельзя к ADO  в потоке обращаться???).
Заранее спасибо.


GanibalLector   (2004-04-23 01:24:00) [1]

Всем пасибки!!!
Разобрался.Млин,сколько подводных камней ...Какие-то  CoInitialize и CoUninitialize.Даже в книгах такого не видел.


Reindeer Moss Eater   (2004-04-22 19:20:00) [2]

2 GanibalLector ©  

Верить в текстовые сообщения об ошибках все же НАДО.


Polevi   (2004-04-22 18:58:00) [3]

PS
также совет гасить все исключения возникающие в поточной ф-ии.


Jack128   (2004-04-22 18:57:00) [4]

В орешник...


Polevi   (2004-04-22 18:56:00) [5]

function potok(Param: Pointer): DWord; stdcall;
var
conn2:_Connection;
begin
 CoInitialize(nil);
 try
   ...
   ...
 finally
   CoUninitialize;  
 end;
end;


GanibalLector   (2004-04-22 18:55:00) [6]

2 Reindeer Moss Eater ©   (22.04.04 17:16) [1]
Если этот код выполнить без потока,то все работает.


Reindeer Moss Eater   (2004-04-22 17:16:00) [7]

А ты поверь в текст ошибки.


Наверх

Титульная страница Поиск, карта сайта Написать письмо