Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Использование CreateThread [D7, WinXP]


Stanislav ©   (2006-03-31 14:26:00) 

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

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

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

 windows.ExitThread(0);
end;

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


MBo   (2006-03-31 16:24:00) [1]

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


Stanislav   (2006-03-31 15:45:00) [2]

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


Stanislav   (2006-03-31 15:25:00) [3]

Спасибо!


MBo   (2006-03-31 15:24:00) [4]

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


Stanislav   (2006-03-31 15:21:00) [5]

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


MBo   (2006-03-31 15:18:00) [6]

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

для CreateThread:

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

для BeginThread иначе:

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


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

Stanislav ©   (31.03.06 15:00) [8]

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


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

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


Stanislav   (2006-03-31 14:57:00) [9]

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

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


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


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


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


>  TQueryEditor (Param).DesignReport;


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


Stanislav   (2006-03-31 14:55:00) [11]

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


MBo   (2006-03-31 14:45:00) [12]

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


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


> покругу


Это как ?


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

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


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


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


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


Наверх

Титульная страница Поиск, карта сайта Написать письмо