Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.03.03;
Скачать: CL | DM;

Вниз

Имеется поток,в нем инициализирую и запускаю еше один ...   Найти похожие ветки 

 
Tommy   (2004-02-19 10:51) [0]

Доброе утро всем!
Вот такая проблемма возникла...
Имеется поток TClientThread
в нем инициализирую и запускаю еше один и жду его окончания,выдает ошибку (на греческом так как греческии) Thread Error : Error Index(6)
В чем может быть дело...помогите кто может!


 
Тимохов ©   (2004-02-19 10:54) [1]

код


 
Tommy   (2004-02-19 11:14) [2]

function TSendThread.PutInfoToLocalBuffer(LocalValues:string; LocalBuffer:byte):boolean;

begin
BufferThread:=TBufferThread.Create(LocalBuffer,1,"");
BufferThread.WaitFor;
...
end;

//other module

type
TBufferThread = class(TThread)
private
Call_Type:byte; //this is type of call
// 1 ->
// 2 ->
// 3 ->
// 4 ->
// 5 ->
// 6 ->
// 7 ->
Update_Type:byte;
Update_Data:string;
PrintString:string; //the result of running the thread...
function Retry_BUFFER:string;
function Retry_InparkBuffer:string;
function Retry_ChargesBuffer:string;
function Retry_EntryBuffer:string;
function Retry_AllChangesBuffer:string;

procedure MyMessage;
{ Private declarations }

protected
procedure Execute; override;

public
constructor Create(PR_Call_Type,PR_Update_Type:byte; PR_Update_Data:string);

end;

constructor TBufferThread.Create(PR_Call_Type,PR_Update_Type:byte; PR_Update_Data:string);
begin

inherited create(true);

Call_Type:=PR_Call_Type; //1 if SENDBUFFER
Update_Type:=PR_Update_Type;
Update_Data:=PR_Update_Data;

FreeOnTerminate:=true;
Resume;
end;

procedure TBufferThread.Execute;
begin
Case Call_Type of

1: Buffer_Thread_Resu[Call_Type,Update_Type] :=Retry_BUFFER;
...
end;

end;

function TBufferThread.Retry_BUFFER:string;
begin
//работаю с массиввами
end


 
Тимохов ©   (2004-02-19 11:27) [3]

Информации маловато... :(((

Что такое Buffer_Thread_Resu?


 
Владислав ©   (2004-02-19 11:33) [4]

Это похоже вот на что: The handle is invalid.


 
Владислав ©   (2004-02-19 11:37) [5]

Могу ошибаться, но одна из возможных причин:
begin
BufferThread:=TBufferThread.Create(LocalBuffer,1,"");
BufferThread.WaitFor; //Здесь ждем хендла потока
...
end;

constructor TBufferThread.Create(PR_Call_Type,PR_Update_Type:byte; PR_Update_Data:string);
begin

inherited create(true);

Call_Type:=PR_Call_Type; //1 if SENDBUFFER
Update_Type:=PR_Update_Type;
Update_Data:=PR_Update_Data;

FreeOnTerminate:=true; // А здесь мы его прибиваем
Resume;
end;


 
Тимохов ©   (2004-02-19 11:41) [6]


> Владислав © (19.02.04 11:37) [5]

Ошибаетесь.
Кого "прибиваем"? Поток еще работать не начал...

Автору - нужно больше информации.


 
Владислав ©   (2004-02-19 11:51) [7]

> Тимохов © (19.02.04 11:41) [6]

Читай подтекстом. Посмотри в код класса в методы WaitFor и в ту часть, в которую потоковая функция попадает после выхода из метода Execute. Что называется, зри в корень.
Ну а причины еще могут быть. Вот автор расскажет, в каком месте ошибка. Меня натолкнула фраза "и жду его окончания,выдает ошибку".
Так что, уважаемый Дмитрий, не торопитесь с выводами ;)


 
Тимохов ©   (2004-02-19 11:52) [8]

В общем, как обычно

> нужно больше информации.


 
Tommy   (2004-02-19 12:48) [9]

ок вся проблемма была именно в ...
FreeOnTerminate:=true
...спасибо большое за помощ!!!



Страницы: 1 вся ветка

Текущий архив: 2004.03.03;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.016 c
3-5940
pashaz
2004-02-06 13:53
2004.03.03
экспорт записей из одной таблицы в другую


1-6146
novi
2004-02-21 18:54
2004.03.03
Как удалить пробелы


1-6124
111
2004-02-21 19:08
2004.03.03
Таблицы


14-6183
Daemys
2004-02-11 17:45
2004.03.03
Всемирный День Больного


3-5947
Санек
2004-02-06 10:40
2004.03.03
FastReport Null поля