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

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

Наверх




Память: 0.5 MB
Время: 0.013 c
14-44999
Карелин Артем
2003-07-29 13:45
2003.08.14
В небольшую фирму требуется админ.


14-45085
KODer
2003-06-14 15:46
2003.08.14
Дублированные функции???


14-45082
Kviz
2003-06-15 13:29
2003.08.14
Как обновить(перерисовть) экран.


14-44991
Vlad Oshin
2003-07-28 10:07
2003.08.14
электрик Володя. Рассказ.


14-44978
Nick Denry
2003-07-30 00:59
2003.08.14
Несчастья...