Вниз
Скачать: CL | DM;

Сложная и долгая задача   Найти похожие ветки 

← →
Ich Hasse ©   (2003-06-11 14:04) [0]

Как сделать, чтобы приложение не подвисало при начале долгой и сложной процедуры?

Заранее большое спасибо, только приведите пример пожалуйста.


← →
jel ©   (2003-06-11 14:10) [1]

Либо Application.ProcessMessages в цикле долгой и сложной процедуры, либо в отдельном потоке ее выполнять. Примеры в справке.


← →
Ich Hasse ©   (2003-06-11 14:13) [2]

А как в отдельном потоке? И приложения у меня на API, откуда здесь Application.ProcessMessages?


← →
jel ©   (2003-06-11 14:16) [3]


> И приложения у меня на API

Из вопроса это не ясно.

> А как в отдельном потоке?

The CreateThread function creates a thread to execute within the address space of the calling process.


← →
Ich Hasse ©   (2003-06-11 14:18) [4]

> Из вопроса это не ясно.
Зато из темы форума ясно

> The CreateThread function creates a thread to execute within
> the address space of the calling process.


ну а пример


← →
jel ©   (2003-06-11 14:20) [5]


> ну а пример

Ну а справку почитать?


← →
Ich Hasse ©   (2003-06-11 14:23) [6]

Там примера нету... а мне нужен именно пример


← →
Крот ©   (2003-06-11 14:38) [7]

Посмотри исходники класса TThread и функции Application.ProcessMessages


← →
Digitman ©   (2003-06-11 14:39) [8]


> Ich Hasse


открываешь исх.текст модуля, где определен и реализован класс TThread - вот тебе и пример.


← →
Ich Hasse ©   (2003-06-11 14:45) [9]

там слишком криво, плюс еще эта классовая структура, заманаешься летать по всем функциям. Люди, ну что жалко пример что ли? Дайте просто текст.

есть процедура
procedure SuperAction;
begin
...
end;

Как выделить сделать так, чтобы ничего не зависло ри ее выполнении и все...


← →
jel ©   (2003-06-11 14:50) [10]

function MainServiceThread(p:Pointer):DWORD;stdcall;
begin
что-то делаем
end;

var
ThID : Cardinal;

hThread:=CreateThread(nil,0,@MainServiceThread,nil,0,ThID);
и ждем его завершения
WaitForSingleObject(hThread,INFINITE);
закрывая после этого его дескриптор
CloseHandle(hThread);



← →
Digitman ©   (2003-06-11 14:51) [11]


> Ich Hasse



> там слишком криво, плюс еще эта классовая структура, заманаешься
> летать по всем функциям


непонятно, зачем тебе вообще Делфи в таком случае)))


← →
Ich Hasse ©   (2003-06-11 14:59) [12]


> непонятно, зачем тебе вообще Делфи в таком случае)))


я бы с удовольствием и на assembler писал, да только там слишком много кода. Потому пишу только используя API. Но пишу только простые программы


← →
Serg11   (2003-06-11 14:59) [13]

http://epg2000.narod.ru/create_threads_without_tthread.shtml.htm

вот ссылка на пример


← →
Digitman ©   (2003-06-11 15:10) [14]


> Ich Hasse



> я бы с удовольствием и на assembler писал, да только там
> слишком много кода


а в Делфи-приложении, делающем то же самое, "простое", но используещем на полную мощь все преимущества VCL, надо понимать, "слишком мало кода" ? Надо ж ведь обязательно, беспричинно отказавшись от VCL, изнасиловать себя лихорадочной стыковкой Паскаль-синтаксиса и WinAPI-интерфейса, описание и C-синтаксис которого присутствует во всей красе на msdn.microsoft.com ?



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.007 c
14-45095
Sergeys
2003-06-13 20:51
2003.08.14
ListView и установка фокуса на нужную строку


14-44994
MetalFan
2003-07-17 10:17
2003.08.14
---|Ветка была без названия|---


14-44960
Maxx
2003-07-30 13:29
2003.08.14
Учет трафика IP


14-45094
LOX
2003-06-10 18:46
2003.08.14
Как показать диалог открытия папки.


14-45089
Иксик
2003-06-14 14:47
2003.08.14
WM_LBUTTONUP




   Наверх