Вниз
Скачать: CL | DM;

Использование CreateThread   Найти похожие ветки 

 
Stanislav ©   (2006-03-31 14:26) [0]

Хочу вызвать процедуру в дополнительном потоке,
Как ее рпавильно вызвать?
Вызываб так:

Windows.CreateThread(nil,0,@design,Self,0,TID);

Procedure Design (Param:Pointer);
begin
 TQueryEditor (Param).DesignReport;

 windows.ExitThread(0);
end;

Но почему-то  код в ней выполняется покругу.
Может в ExitThread нужно что-то другое передавать?


 
Игорь Шевченко ©   (2006-03-31 14:29) [1]


> Хочу вызвать процедуру в дополнительном потоке,


Почему бы не поискать в Demos работу с классом TThread ?


 
Stanislav ©   (2006-03-31 14:37) [2]

С классом понятно, интересует именно WinApi.


 
Сергей М. ©   (2006-03-31 14:44) [3]


> покругу


Это как ?


 
MBo ©   (2006-03-31 14:45) [4]

>интересует именно WinApi.
во-первых, стоит BeginThread использовать, а не CreateThread
во-вторых, поточная функция должна непременно соответствовать описанному в справке прототипу
в-третьих, ни к чему ExitThread делать в конце поточной функции


 
Stanislav ©   (2006-03-31 14:55) [5]

MBo ©   (31.03.06 14:45) [4]
1 исправил
2. должна непременно соответствовать описанному в справке прототипу
не нашел. Моя не соответствует?
3. Убрал.


 
Stanislav ©   (2006-03-31 14:57) [6]

Сергей М. ©   (31.03.06 14:44) [3]

Это значит она постоянно выполняется.


 
Игорь Шевченко ©   (2006-03-31 14:57) [7]


> С классом понятно, интересует именно WinApi


Надо понимать, эта строчка


>  TQueryEditor (Param).DesignReport;


является совсем WinAPI и к VCL никакого отношения не имеет ?


 
Stanislav ©   (2006-03-31 15:00) [8]

Игорь Шевченко ©   (31.03.06 14:57) [7]
Имеет.


 
Игорь Шевченко ©   (2006-03-31 15:16) [9]

Stanislav ©   (31.03.06 15:00) [8]

Тогда почему бы и в вопросе потоков его (VCL) не использовать ? Опять же, и в Demos примеры есть.


 
MBo ©   (2006-03-31 15:18) [10]

>прототипу
>не нашел. Моя не соответствует?

для CreateThread:

function ThreadFunc(Param: Pointer): DWord; stdcall;

для BeginThread иначе:

type TThreadFunc = function(Parameter: Pointer): Integer;


 
Stanislav ©   (2006-03-31 15:21) [11]

Спасибо, а что в Result писать?


 
MBo ©   (2006-03-31 15:24) [12]

>а что в Result писать?
Обычно можно ничего не писать, или 0. Это для GetExitCodeThread нужно, если результат анализируется (редко требуется)


 
Stanislav ©   (2006-03-31 15:25) [13]

Спасибо!


 
Stanislav ©   (2006-03-31 15:45) [14]

Спасибо все работает!


 
MBo ©   (2006-03-31 16:24) [15]

А почему не хочешь TThread воспользоваться? Попроще будет.



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

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.068 c
15-1149832520
Ega23
2006-06-09 09:55
2006.07.09
С Днём рождения! 9 июня


15-1149974527
tEass
2006-06-11 01:22
2006.07.09
1e-8 это что? Сколько?


2-1149771876
HaeMa
2006-06-08 17:04
2006.07.09
Как программно узнать количество строк в текстовом файле?


2-1150176880
Rezya
2006-06-13 09:34
2006.07.09
DBGride


2-1150983823
DimaRik
2006-06-22 17:43
2006.07.09
помогите




   Наверх