Вниз
Скачать: 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.024 c
1-1148564081
Volf_555
2006-05-25 17:34
2006.07.09
Восстановление TRAY-значка


1-1148546057
Alex35
2006-05-25 12:34
2006.07.09
Создать меню для дочерней формы


15-1149836328
ANB
2006-06-09 10:58
2006.07.09
Как красивее и понятнее ?


15-1150011582
KASioZ
2006-06-11 11:39
2006.07.09
Debugger


2-1150928102
й
2006-06-22 02:15
2006.07.09
Messages Windows




   Наверх