Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2006.07.09;
Скачать: [xml.tar.bz2];

Вниз

Использование 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 вся ветка

Форум: "WinAPI";
Текущий архив: 2006.07.09;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.009 c
2-1150706401
Уля
2006-06-19 12:40
2006.07.09
Работа с Excel


8-1138452664
Universe
2006-01-28 15:51
2006.07.09
Большие изображения


15-1149735996
tButton
2006-06-08 07:06
2006.07.09
деньги...


2-1150530227
kilonet
2006-06-17 11:43
2006.07.09
формат файла *.CDS


2-1151047825
KygECHuK
2006-06-23 11:30
2006.07.09
Работа с TChart





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский