Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.07.09;
Скачать: 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 вся ветка

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

Наверх




Память: 0.49 MB
Время: 0.055 c
2-1150380700
irena
2006-06-15 18:11
2006.07.09
синтаксис оператора with


2-1151019724
susergey
2006-06-23 03:42
2006.07.09
.exe в .exe


2-1150804461
resuS
2006-06-20 15:54
2006.07.09
Задача на вычисление выражения записанного в строке


1-1148542464
inew
2006-05-25 11:34
2006.07.09
Компонет indy10. Ограничение на размер файла.


1-1148925058
VitaWED
2006-05-29 21:50
2006.07.09
ListView + кнопки