Форум: "WinAPI";
Текущий архив: 2004.06.06;
Скачать: [xml.tar.bz2];
Вниз
Проблемы с потоком Найти похожие ветки
← →
Talla2k © (2004-04-22 17:14) [0]Некоторый код необходимо выполнить в потоке.
Делаю так:
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 в потоке обращаться???).
Заранее спасибо.
← →
Reindeer Moss Eater © (2004-04-22 17:16) [1]А ты поверь в текст ошибки.
← →
GanibalLector © (2004-04-22 18:55) [2]2 Reindeer Moss Eater © (22.04.04 17:16) [1]
Если этот код выполнить без потока,то все работает.
← →
Polevi © (2004-04-22 18:56) [3]function potok(Param: Pointer): DWord; stdcall;
var
conn2:_Connection;
begin
CoInitialize(nil);
try
...
...
finally
CoUninitialize;
end;
end;
← →
Jack128 © (2004-04-22 18:57) [4]В орешник...
← →
Polevi © (2004-04-22 18:58) [5]PS
также совет гасить все исключения возникающие в поточной ф-ии.
← →
Reindeer Moss Eater © (2004-04-22 19:20) [6]2 GanibalLector ©
Верить в текстовые сообщения об ошибках все же НАДО.
← →
GanibalLector © (2004-04-23 01:24) [7]Всем пасибки!!!
Разобрался.Млин,сколько подводных камней ...Какие-то CoInitialize и CoUninitialize.Даже в книгах такого не видел.
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2004.06.06;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.03 c