Главная страница
    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.47 MB
Время: 0.011 c
9-1131883877
ilivit
2005-11-13 15:11
2006.07.09
Нужна помощь в создании структуры карты и редактора и тп...


6-1141464906
MegaWolf510
2006-03-04 12:35
2006.07.09
Проблема с отправкой смс сообщений через com. Помогите, плиз...


15-1149848331
Чапаев
2006-06-09 14:18
2006.07.09
Создать пользователя...


2-1150895776
logslava
2006-06-21 17:16
2006.07.09
if Form=nil


2-1150640216
AlexanderMS
2006-06-18 18:16
2006.07.09
Клавиша быстрого доступа в меню (TMainMenu) "&Options"...





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский